İngilizceFransızcaİspanyolca

Ad


OnWorks favicon'u

abicompat - Bulutta Çevrimiçi

Abicompat'ı Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü üzerinden OnWorks ücretsiz barındırma sağlayıcısında çalıştırın

Bu, Ubuntu Online, Fedora Online, Windows çevrimiçi emülatörü veya MAC OS çevrimiçi emülatörü gibi birden fazla ücretsiz çevrimiçi iş istasyonumuzdan birini kullanarak OnWorks ücretsiz barındırma sağlayıcısında çalıştırılabilen abicompat komutudur.

Program:

ADI


abicompat - ABI uyumluluğunu kontrol edin

abicompat, belirli bir paylaşılan kitaplığa bağlanan bir uygulamanın hala
ABI, bu kitaplığın sonraki bir sürümüyle uyumludur. Yeni sürümü ise
kitaplık bir ABI uyumsuzluğu sunar, ardından abicompat kullanıcıya tam olarak ne olduğu konusunda ipuçları verir.
uyumsuzluk budur.

ÇAĞRI


abicompat [seçenekler] [ ]

SEÇENEKLER


· --yardım et

Komutla ilgili kısa bir yardım görüntüleyin ve çıkın.

· --versiyon | -v

Programın sürümünü görüntüleyin ve çıkın.

· --list-tanımsız-semboller | -u

Uygulamanın tanımsız sembollerinin listesini görüntüleyin ve çıkın.

· --temel-isimleri göster | -b

Aracın çıkardığı sonuç raporunda bu seçenek, uygulamayı ve
kütüphanelere yalnızca temel adlarıyla başvurulabilir; tam bir adla değil. Bu
uygulamanın adlarını karşılaştırmak isteyen komut dosyalarında kullanım için yararlı olabilir ve
kütüphaneler, dizin adlarından bağımsız olarak.

· --app-debug-info-dir

Uygulamanın hata ayıklama bilgilerinin bulunduğu dizinin yolunu ayarlayın.
ortaya konması gerekiyordu. Bu, hata ayıklamanın yapıldığı uygulama ikili dosyaları için kullanışlıdır.
info ayrı bir dosya kümesindedir.

· --lib-debug-bilgi-dir1

İlk sürümün hata ayıklama bilgilerinin altında bulunduğu dizine giden yolu ayarlayın.
paylaşılan kütüphanenin düzenlenmesi gerekiyordu. Bu, paylaşılan kitaplık için yararlıdır
Hata ayıklama bilgilerinin ayrı bir dosya kümesinde olduğu ikili dosyalar.

· --lib-debug-bilgi-dir2

İkinci sürümün hata ayıklama bilgilerinin altında yer aldığı dizine giden yolu ayarlayın.
paylaşılan kütüphanenin düzenlenmesi gerekiyordu. Bu, paylaşılan kitaplık için yararlıdır
Hata ayıklama bilgilerinin ayrı bir dosya kümesinde olduğu ikili dosyalar.

· --yerleri göstermeme
içinde nerede olduğu hakkında bilgi göstermeyin. ikinci Paylaşılan kütüphane ilgili
tipi değiştirildi.

· --zayıf-mod

Bu, zayıf modunu tetikler. Abi uyumlu. Bu modda, yalnızca bir sürüm
kütüphane gereklidir. Yani abicompat şu şekilde çağrılır:

abicompat --zayıf-mod

Unutmayın --zayıf-mod seçeneğin yalnızca bir sürümü varsa bile atlanabilir.
uygulama ile birlikte kütüphane verilir; bu durumda, Abi uyumlu otomatik olarak
zayıf modda çalışmaya geçer:

abicompat

Bu zayıf modda, kitaplık tarafından dışa aktarılan işlev ve değişken türleri ve
uygulama tarafından tüketilen (bu fonksiyonların ve değişkenlerin sembollerinde olduğu gibi)
uygulamada tanımsızdır ve kitaplık tarafından tanımlanır ve dışa aktarılır)
Uygulama tarafından beklendiği gibi bu türlerin sürümleriyle karşılaştırıldığında. Ve eğer bunlar
türlerin iki versiyonu farklıdır, Abi uyumlu kullanıcıya farklılıkların ne olduğunu söyler
vardır.

Başka bir deyişle, bu modda, Abi uyumlu fonksiyonların türlerini kontrol eder ve
kütüphane tarafından dışa aktarılan değişkenler, uygulamanın ne anlama geldiğiyle aynı anlama gelir.
ABI söz konusu olduğunda, beklentiler.

Bu modda dikkat edin, Abi uyumlu dışa aktarılan işlevleri veya değişkenleri algılamaz
Uygulama tarafından beklenen ancak kitaplıktan kaldırılan (semboller).
Bu yüzden denir zayıf modu.

DÖNÜŞ DEĞERLER


çıkış kodu Abi uyumlu komut, ikili dosyaların ABI'si varsa 0'dır.
karşılaştırılan değerler eşittir veya farklıysa veya araç bir hatayla karşılaşırsa sıfır değildir.

Daha sonraki durumda, çıkış kodu, her bitin bir
özel anlam.

1 değerindeki ilk bit olarak adlandırılan ABIDIFF_ERROR bir hata olduğu anlamına gelir.

2 değerindeki ikinci bit olarak adlandırılan ABIDIFF_USAGE_ERROR yani yolda bir hata var
kullanıcı aracı çağırdı. Örneğin, kullanıcı aracı çalıştırdıysa ayarlanabilir.
bilinmeyen bir komut satırı anahtarıyla, yanlış bir sayı veya argümanla vb. Bu bit ise
ayarlayın, ardından ABIDIFF_ERROR bit de ayarlanmalıdır.

4 değerindeki üçüncü bit olarak adlandırılan ABIDIFF_ABI_CHANGE ikili dosyaların ABI'si anlamına gelir
karşılaştırıldığında farklıdır.

8 değerindeki dördüncü bit ABIDIFF_ABI_INCOMPATIBLE_CHANGE ABI anlamına gelir
karşılaştırılan ikili dosyalar uyumsuz bir şekilde farklıdır. Bu bit ayarlanırsa, o zaman
ABIDIFF_ABI_CHANGE bit de ayarlanmalıdır. Eğer ABIDIFF_ABI_CHANGE ayarlanır ve
ABIDIFF_INCOMPATIBLE_CHANGE is DEĞİL ayarlandıysa, bu, karşılaştırılan ABI'lerin
veya uyumlu olmayabilir. Bu durumda, bir insanın ABI değişikliklerini gözden geçirmesi gerekir.
uyumlu olup olmadığına karar vermek için.

Kalan bitler şu an için kullanılmamaktadır.

KULLANIM ÖRNEKLER


· Yeni bir paylaşılan kitaplık sürümünde olası bir ABI uyumsuzluğunun saptanması:

$ kedi -n test0.h
1 yapı foo
2 {
3 int m0;
4
5 foo()
6 : m0()
7 {}
8};
9
10 fo*
11 ilk_işlev();
12
13 boşluk
14 second_func(foo&);
15
16 boşluk
17 üçüncü_işlev();
$

$ cat -n test-app.cc
1 // Şununla derleyin:
2 // g++ -g -Duvar -o test uygulaması -L. -ltest-0 test-app.cc
3
4 #"test0.h"yi dahil et
5
6 inç
7 ana()
8 {
9 foo* f = ilk_func();
10 saniye_işlevi(*f);
11 dönüş 0;
12}
$

$ kedi -n test0.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-0.so test0.cc
3
4 #"test0.h"yi dahil et
5
6 fo*
7 ilk_işlev()
8 {
9 foo* f = yeni foo();
10 dönüş f;
11}
12
13 boşluk
14 saniye_işlev(foo&)
15 {
16}
17
18 boşluk
19 üçüncü işlev()
20 {
21}
$

$ kedi -n test1.h
1 yapı foo
2 {
3 int m0;
4 karakter m1; /* <-- buraya yeni bir üye eklendi! */
5
6 foo()
7 : m0(),
8 m1()
9 {}
10};
11
12 fo*
13 ilk_işlev();
14
15 boşluk
16 second_func(foo&);
17
18 boşluk
19 üçüncü_işlev();
$

$ kedi -n test1.cc
1 // Bunu şununla derleyin:
2 // g++ -g -Duvar -paylaşılan -o libtest-1.so test1.cc
3
4 #"test1.h"yi dahil et
5
6 fo*
7 ilk_işlev()
8 {
9 foo* f = yeni foo();
10 dönüş f;
11}
12
13 boşluk
14 saniye_işlev(foo&)
15 {
16}
17
18 /* Third_func() tanımını yorumlayalım
19 boşluk
20 üçüncü işlev()
21 {
22}
23 */
$

· Kütüphanelerin birinci ve ikinci versiyonlarını derleyin: libtest-0.so ve
libtest-1.so:

$ g++ -g -Duvar -paylaşılan -o libtest-0.so test0.cc
$ g++ -g -Duvar -paylaşılan -o libtest-1.so test1.cc

· Uygulamayı derleyin ve kütüphanenin ilk sürümüne bağlayın,
yaratmak test uygulaması ikili:

$ g++ -g -Duvar -o test uygulaması -L. -ltest-0.so test-app.cc

· Şimdi, kullanın Abi uyumlu libtest-1.so'nun uygulama ile uyumlu olup olmadığını görmek için
libtest-0.so'nun ABI'sine:

$ abicompat test uygulaması libtest-0.so libtest-1.so
ELF dosyası 'test-app', aşağıdaki 'libtest-1.so' ile farklılıklar nedeniyle 'libtest-0.so' ile ABI uyumlu olmayabilir:
İşlev değişiklikleri özeti: 0 Kaldırıldı, 2 Değiştirildi, 0 Eklenen işlevler
Değişken değişiklikleri özeti: 0 Kaldırıldı, 0 Değiştirildi, 0 Değişken eklendi

Bazı dolaylı alt tür değişikliği ile 2 işlev:

[C]'function foo* first_func()' bazı dolaylı alt tür değişiklikleri içeriyor:
dönüş türü değişti:
'struct foo' yazmayı işaret etti:
boyut 32'den 64 bit'e değiştirildi
1 veri üyesi ekleme:
'char foo::m1', ofset 32'de (bit olarak)
[C]'function void second_func(foo&)'' bazı dolaylı alt tür değişiklikleri içeriyor:
'foo&' türündeki 0 parametresinin alt türü değişiklikleri var:
başvurulan tip 'struct foo' değişti, daha önce bildirildiği gibi

$

· Şimdi abicompat'ın zayıf modunu kullanın, yani sadece uygulamayı ve
kütüphanenin yeni versiyonu:

$ abicompat --zayıf mod test uygulaması libtest-1.so
kütüphanede tanımlanan fonksiyonlar
'libtest-1.so'
hangi uygulamadan farklı alt türleri vardır
'test uygulaması'
bekler:

işlev foo* first_func():
dönüş türü değişti:
'struct foo' yazmayı işaret etti:
boyut 32'den 64 bit'e değiştirildi
1 veri üyesi ekleme:
'char foo::m1', ofset 32'de (bit olarak)

$

onworks.net hizmetlerini kullanarak abicompat'ı çevrimiçi kullanın


Ücretsiz Sunucular ve İş İstasyonları

Windows ve Linux uygulamalarını indirin

Linux komutları

Ad