EnglishFrenchSpanyol

Ad


Favicon OnWorks

abicompat - Dalam talian di Awan

Jalankan abicompat dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan abicompat yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


abicompat - semak keserasian ABI

abicompat menyemak bahawa aplikasi yang memaut dengan perpustakaan kongsi tertentu masih ada
ABI serasi dengan versi pustaka itu yang seterusnya. Jika versi baharu
perpustakaan memperkenalkan ketidakserasian ABI, kemudian abicompat memberi petunjuk kepada pengguna tentang apa sebenarnya
ketidakserasian itu adalah.

INVOKASI


abicompat [pilihan] [ ]

PILIHAN


· - membantu

Paparkan bantuan ringkas tentang arahan dan keluar.

· --versi | -v

Paparkan versi program dan keluar.

· --list-undefined-simbol | -u

Paparkan senarai simbol yang tidak ditentukan bagi aplikasi dan keluar.

· --show-base-namas | -b

Dalam laporan terhasil yang dikeluarkan oleh alat, pilihan ini menjadikan aplikasi dan
perpustakaan dirujuk dengan nama asasnya sahaja; bukan dengan nama mutlak penuh. ini
boleh berguna untuk digunakan dalam skrip yang ingin membandingkan nama aplikasi dan
perpustakaan secara bebas daripada nama direktori mereka.

· --app-debug-info-dir

Tetapkan laluan ke direktori di mana maklumat nyahpepijat aplikasi berada
sepatutnya dibentangkan. Ini berguna untuk perduaan aplikasi yang mana nyahpepijat
maklumat adalah dalam set fail yang berasingan.

· --lib-debug-info-dir1

Tetapkan laluan ke direktori di mana maklumat nyahpepijat versi pertama
perpustakaan kongsi sepatutnya dibentangkan. Ini berguna untuk perpustakaan kongsi
binari yang mana maklumat nyahpepijat berada dalam set fail yang berasingan.

· --lib-debug-info-dir2

Tetapkan laluan ke direktori di mana maklumat nyahpepijat versi kedua
perpustakaan kongsi sepatutnya dibentangkan. Ini berguna untuk perpustakaan kongsi
binari yang mana maklumat nyahpepijat berada dalam set fail yang berasingan.

· --tempat-tidak hadir
Jangan tunjukkan maklumat tentang tempat di dalam kedua dikongsi perpustakaan masing-masing
jenis telah ditukar.

· --mod-lemah

Ini mencetuskan mod lemah abicompat. Dalam mod ini, hanya satu versi
perpustakaan diperlukan. Iaitu, abicompat dipanggil seperti ini:

abicompat --mod-lemah

Ambil perhatian bahawa --mod-lemah pilihan malah boleh ditinggalkan jika hanya satu versi
perpustakaan diberikan, bersama-sama dengan aplikasi; kalau macam itu, abicompat secara automatik
suis untuk beroperasi dalam mod lemah:

abicompat

Dalam mod lemah ini, jenis fungsi dan pembolehubah yang dieksport oleh perpustakaan dan
digunakan oleh aplikasi (seperti dalam, simbol fungsi dan pembolehubah ini
tidak ditentukan dalam aplikasi dan ditakrifkan dan dieksport oleh perpustakaan) adalah
berbanding dengan versi jenis ini seperti yang dijangkakan oleh aplikasi. Dan jika ini
dua versi jenis adalah berbeza, abicompat memberitahu pengguna apa perbezaannya
adalah.

Dengan kata lain, dalam mod ini, abicompat menyemak bahawa jenis fungsi dan
pembolehubah yang dieksport oleh perpustakaan bermaksud perkara yang sama seperti aplikasi
menjangkakan, setakat ABI berkenaan.

Perhatikan bahawa dalam mod ini, abicompat tidak mengesan fungsi atau pembolehubah yang dieksport
(simbol) yang dijangka oleh aplikasi tetapi yang dialih keluar daripada perpustakaan.
Itulah sebabnya ia dipanggil lemah mod.

PULANG BALIK NILAI-NILAI


Kod keluar dari abicompat arahan adalah sama ada 0 jika ABI bagi makhluk binari
dibandingkan adalah sama, atau bukan sifar jika berbeza atau jika alat mengalami ralat.

Dalam kes kemudian, kod keluar ialah medan bit 8-bit lebar di mana setiap bit mempunyai a
makna khusus.

Bit pertama, nilai 1, dinamakan ABIDIFF_ERROR bermakna terdapat ralat.

Bit kedua, nilai 2, dinamakan ABIDIFF_USAGE_ERROR bermakna terdapat ralat dalam perjalanan
pengguna menggunakan alat tersebut. Ia mungkin ditetapkan, sebagai contoh, jika pengguna menggunakan alat tersebut
dengan suis baris arahan yang tidak diketahui, dengan nombor atau hujah yang salah, dsb. Jika bit ini
ditetapkan, kemudian ABIDIFF_ERROR bit mesti ditetapkan juga.

Bit ketiga, nilai 4, dinamakan ABIDIFF_ABI_CHANGE bermaksud ABI makhluk binari
dibandingkan adalah berbeza.

Bit keempat, nilai 8, dinamakan ABIDIFF_ABI_INCOMPATIBLE_CHANGE bermaksud ABI bagi
binari yang dibandingkan adalah berbeza dengan cara yang tidak serasi. Jika bit ini ditetapkan, maka
ABIDIFF_ABI_CHANGE bit mesti ditetapkan juga. Sekiranya ABIDIFF_ABI_CHANGE ditetapkan dan
ABIDIFF_INCOMPATIBLE_CHANGE is TIDAK ditetapkan, maka ini bermakna ABI yang dibandingkan mungkin
atau mungkin tidak serasi. Dalam kes itu, seseorang manusia perlu menyemak perubahan ABI
untuk memutuskan sama ada mereka serasi atau tidak.

Bit yang tinggal tidak digunakan buat masa ini.

PENGGUNAAN CONTOH


· Mengesan kemungkinan ketidakserasian ABI dalam versi perpustakaan kongsi baharu:

$ kucing -n ujian0.h
1 struktur foo
2 {
3 int m0;
4
5 foo()
6 : m0()
7 {}
8};
9
10 foo*
11 first_func();
12
13 batal
14 second_func(foo&);
15
16 batal
17 third_func();
$

$ cat -n test-app.cc
1 // Susun dengan:
2 // g++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
3
4 #include "test0.h"
5
6 int
7 utama()
8 {
9 foo* f = first_func();
10 second_func(*f);
11 pulangan 0;
12}
$

$ cat -n test0.cc
1 // Susun ini dengan:
2 // g++ -g -Wall -shared -o libtest-0.so test0.cc
3
4 #include "test0.h"
5
6 foo*
7 first_func()
8 {
9 foo* f = new foo();
10 pulangan f;
11}
12
13 batal
14 second_func(foo&)
15 {
16}
17
18 batal
19 third_func()
20 {
21}
$

$ kucing -n ujian1.h
1 struktur foo
2 {
3 int m0;
4 aksara m1; /* <-- ahli baharu telah ditambah di sini! */
5
6 foo()
7 : m0(),
8 m1()
9 {}
10};
11
12 foo*
13 first_func();
14
15 batal
16 second_func(foo&);
17
18 batal
19 third_func();
$

$ cat -n test1.cc
1 // Susun ini dengan:
2 // g++ -g -Wall -shared -o libtest-1.so test1.cc
3
4 #include "test1.h"
5
6 foo*
7 first_func()
8 {
9 foo* f = new foo();
10 pulangan f;
11}
12
13 batal
14 second_func(foo&)
15 {
16}
17
18 /* Mari kita ulas definisi third_func()
19 batal
20 third_func()
21 {
22}
23 */
$

· Susun versi pertama dan kedua perpustakaan: libtest-0.so and
libtest-1.so:

$ g++ -g -Wall -shared -o libtest-0.so test0.cc
$ g++ -g -Wall -shared -o libtest-1.so test1.cc

· Susun aplikasi dan pautkannya dengan versi pertama perpustakaan,
mencipta aplikasi ujian binari:

$ g++ -g -Wall -o test-app -L. -ltest-0.so test-app.cc

· Sekarang, gunakan abicompat untuk melihat sama ada libtest-1.so adalah ABI serasi dengan apl, berkenaan
kepada ABI libtest-0.so:

$ abicompat test-app libtest-0.so libtest-1.so
Fail ELF 'test-app' mungkin tidak serasi ABI dengan 'libtest-1.so' kerana perbezaan dengan 'libtest-0.so' di bawah:
Ringkasan perubahan fungsi: 0 Dialih keluar, 2 Diubah, 0 Ditambah fungsi
Ringkasan perubahan pembolehubah: 0 Dibuang, 0 Diubah, 0 Pembolehubah ditambah

2 fungsi dengan beberapa perubahan subjenis tidak langsung:

[C]'function foo* first_func()' mempunyai beberapa perubahan subjenis tidak langsung:
jenis pulangan berubah:
dalam menunjuk untuk menaip 'struct foo':
saiz berubah daripada 32 kepada 64 bit
1 sisipan ahli data:
'char foo::m1', pada offset 32 ​​(dalam bit)
[C]'function void second_func(foo&)' mempunyai beberapa perubahan subjenis tidak langsung:
parameter 0 jenis 'foo&' mempunyai perubahan subjenis:
jenis rujukan 'struct foo' berubah, seperti yang dilaporkan sebelum ini

$

· Sekarang gunakan mod lemah abicompat, iaitu, menyediakan hanya aplikasi dan
versi baharu perpustakaan:

$ abicompat --weak-mode test-app libtest-1.so
fungsi yang ditakrifkan dalam perpustakaan
'libtest-1.so'
mempunyai sub-jenis yang berbeza daripada aplikasi apa
'apl ujian'
menjangkakan:

fungsi foo* first_func():
jenis pulangan berubah:
dalam menunjuk untuk menaip 'struct foo':
saiz berubah daripada 32 kepada 64 bit
1 sisipan ahli data:
'char foo::m1', pada offset 32 ​​(dalam bit)

$

Gunakan abicompat dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad