InggrisPerancisSpanyol

Ad


favorit OnWorks

abicompat - Online di Cloud

Jalankan abicompat di penyedia hosting gratis OnWorks melalui Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

Ini adalah perintah abicompat yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows atau emulator online MAC OS

PROGRAM:

NAMA


abicompat - periksa kompatibilitas ABI

abicompat memeriksa apakah aplikasi yang menautkan ke perpustakaan bersama yang diberikan masih
ABI kompatibel dengan versi perpustakaan berikutnya. Jika versi baru dari
library memperkenalkan ketidakcocokan ABI, lalu abicompat memberi petunjuk kepada pengguna tentang apa yang sebenarnya
ketidakcocokan itu.

DOA


abicompat [opsi] [ ]

PILIHAN


· --membantu

Tampilkan bantuan singkat tentang perintah dan keluar.

· --Versi: kapan | -v

Tampilkan versi program dan keluar.

· --list-undefined-simbol | -u

Tampilkan daftar simbol aplikasi yang tidak ditentukan dan keluar.

· --tampilkan-nama-dasar | -b

Dalam laporan yang dihasilkan yang dikeluarkan oleh alat, opsi ini membuat aplikasi dan
perpustakaan dirujuk dengan nama dasarnya saja; bukan dengan nama lengkap yang mutlak. Ini
dapat berguna untuk digunakan dalam skrip yang ingin membandingkan nama aplikasi dan
perpustakaan secara independen dari apa nama direktori mereka.

· --aplikasi-debug-info-dir

Setel jalur ke direktori tempat informasi debug aplikasi berada
seharusnya ditata. Ini berguna untuk binari aplikasi tempat debug
info ada di kumpulan file yang terpisah.

· --lib-debug-info-dir1

Setel jalur ke direktori tempat informasi debug versi pertama
dari perpustakaan bersama seharusnya ditata. Ini berguna untuk perpustakaan bersama
binari yang info debugnya berada dalam kumpulan file yang terpisah.

· --lib-debug-info-dir2

Setel jalur ke direktori tempat informasi debug versi kedua
dari perpustakaan bersama seharusnya ditata. Ini berguna untuk perpustakaan bersama
binari yang info debugnya berada dalam kumpulan file yang terpisah.

· --tidak ada pertunjukan-lokasi
Jangan tampilkan informasi tentang lokasi di kedua berbagi perpustakaan masing-masing
jenis diubah.

· --mode-lemah

Ini memicu mode lemah abicompat. Dalam mode ini, hanya satu versi dari
perpustakaan diperlukan. Artinya, abicompat dipanggil seperti ini:

abicompat --mode-lemah

Perhatikan bahwa --mode-lemah opsi bahkan dapat dihilangkan jika hanya satu versi dari
perpustakaan diberikan, bersama dengan aplikasi; dalam hal itu, abicompat secara otomatis
sakelar untuk beroperasi dalam mode lemah:

abicompat

Dalam mode lemah ini, jenis fungsi dan variabel yang diekspor oleh perpustakaan dan
dikonsumsi oleh aplikasi (seperti pada, simbol dari fungsi dan variabel ini
tidak terdefinisi dalam aplikasi dan didefinisikan dan diekspor oleh perpustakaan) adalah
dibandingkan dengan versi jenis ini seperti yang diharapkan oleh aplikasi. Dan jika ini
dua versi tipe yang berbeda, abicompat memberi tahu pengguna apa perbedaannya
berada.

Dengan kata lain, dalam mode ini, abicompat memeriksa bahwa jenis fungsi dan
variabel yang diekspor oleh perpustakaan memiliki arti yang sama dengan aplikasi
mengharapkan, sejauh menyangkut ABI.

Perhatikan bahwa dalam mode ini, abicompat tidak mendeteksi fungsi atau variabel yang diekspor
(simbol) yang diharapkan oleh aplikasi tetapi dihapus dari perpustakaan.
Itulah mengapa disebut lemah mode.

KEMBALI NILAI


Kode keluar dari abicompat perintahnya adalah 0 jika ABI dari binari adalah
dibandingkan adalah sama, atau bukan nol jika berbeda atau jika alat mengalami kesalahan.

Dalam kasus selanjutnya, kode keluar adalah bidang bit dengan lebar 8-bit di mana setiap bit memiliki
makna tertentu.

Bit pertama, bernilai 1, bernama ABIDIF_ERROR berarti ada kesalahan.

Bit kedua, dari nilai 2, bernama ABIDIF_USAGE_ERROR berarti ada kesalahan di jalan
pengguna memanggil alat. Mungkin diatur, misalnya, jika pengguna memanggil alat
dengan sakelar baris perintah yang tidak diketahui, dengan nomor atau argumen yang salah, dll. Jika bit ini
ditetapkan, maka ABIDIF_ERROR bit harus diatur juga.

Bit ketiga, bernilai 4, bernama ABIDIF_ABI_CHANGE berarti ABI dari binari menjadi
dibandingkan berbeda.

Bit keempat, bernilai 8, bernama ABIDIFF_ABI_INCOMPATIBLE_CHANGE berarti ABI dari
binari dibandingkan berbeda dalam cara yang tidak kompatibel. Jika bit ini disetel, maka
ABIDIF_ABI_CHANGE bit harus diatur juga. jika ABIDIF_ABI_CHANGE diatur dan
ABIDIF_INCOMPATIBLE_CHANGE is JANGAN ditetapkan, maka itu berarti bahwa ABI yang dibandingkan mungkin
atau mungkin tidak kompatibel. Dalam hal ini, manusia perlu meninjau perubahan ABI
untuk memutuskan apakah mereka kompatibel atau tidak.

Bit yang tersisa tidak digunakan untuk saat ini.

PENGGUNAAN CONTOH


· Mendeteksi kemungkinan ketidakcocokan ABI dalam versi perpustakaan bersama yang baru:

$ kucing -n uji0.h
1 struktur foo
2 {
3 int m0;
4
5 kaki()
6: m0()
7 {}
8 };
9
10 menit*
11 fungsi_pertama();
12
13 kosong
14 detik_fungsi(foo&);
15
16 kosong
17 fungsi_ketiga();
$

$ cat -n uji-aplikasi.cc
1 // Kompilasi dengan:
2 // g++ -g -Wall -o tes-aplikasi -L. -ltest-0 test-app.cc
3
4 #termasuk "test0.h"
5
6 inci
7 utama()
8 {
9 foo* f = fungsi_pertama();
10 detik_fungsi(*f);
11 kembali 0;
12}
$

$ kucing -n uji0.cc
1 // Kompilasi ini dengan:
2 // g++ -g -Dinding -bersama -o libtest-0.so test0.cc
3
4 #termasuk "test0.h"
5
6 menit*
7 fungsi_pertama()
8 {
9 foo* f = foo baru();
10 pengembalian f;
11}
12
13 kosong
14 detik_fungsi(foo&)
15 {
16}
17
18 kosong
19 fungsi_ketiga()
20 {
21}
$

$ kucing -n uji1.h
1 struktur foo
2 {
3 int m0;
4 karakter m1; /* <-- anggota baru telah ditambahkan di sini! */
5
6 kaki()
7 : m0(),
8m1()
9 {}
10 };
11
12 menit*
13 fungsi_pertama();
14
15 kosong
16 detik_fungsi(foo&);
17
18 kosong
19 fungsi_ketiga();
$

$ kucing -n uji1.cc
1 // Kompilasi ini dengan:
2 // g++ -g -Dinding -bersama -o libtest-1.so test1.cc
3
4 #termasuk "test1.h"
5
6 menit*
7 fungsi_pertama()
8 {
9 foo* f = foo baru();
10 pengembalian f;
11}
12
13 kosong
14 detik_fungsi(foo&)
15 {
16}
17
18 /* Mari mengomentari definisi third_func()
19 kosong
20 fungsi_ketiga()
21 {
22}
23*/
$

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

$ g++ -g -Dinding -bersama -o libtest-0.so test0.cc
$ g++ -g -Dinding -bersama -o libtest-1.so test1.cc

· Kompilasi aplikasi dan tautkan dengan versi pertama perpustakaan,
menciptakan tes-aplikasi biner:

$ g++ -g -Dinding -o tes-aplikasi -L. -ltest-0.so test-app.cc

· Sekarang, gunakan abicompat untuk melihat apakah libtest-1.so kompatibel dengan ABI dengan aplikasi, dengan hormat
ke ABI dari libtest-0.so:

$ aplikasi uji abicompat libtest-0.so libtest-1.so
File ELF 'test-app' mungkin tidak kompatibel dengan ABI dengan 'libtest-1.so' karena perbedaan dengan 'libtest-0.so' di bawah:
Ringkasan perubahan fungsi: 0 Dihapus, 2 Diubah, 0 Fungsi ditambahkan
Ringkasan perubahan variabel: 0 Dihapus, 0 Diubah, 0 Variabel ditambahkan

2 fungsi dengan beberapa perubahan sub-tipe tidak langsung:

[C]'function foo* first_func()' memiliki beberapa perubahan sub-tipe tidak langsung:
jenis pengembalian diubah:
di menunjuk ke ketik 'struct foo':
ukuran berubah dari 32 menjadi 64 bit
1 penyisipan anggota data:
'char foo::m1', pada offset 32 ​​(dalam bit)
[C]'function void second_func(foo&)' memiliki beberapa perubahan sub-tipe tidak langsung:
parameter 0 dari tipe 'foo&' memiliki perubahan sub-tipe:
tipe referensi 'struct foo' berubah, seperti yang dilaporkan sebelumnya

$

· Sekarang gunakan mode lemah abicompat, yaitu, hanya menyediakan aplikasi dan
versi baru perpustakaan:

$ abicompat --aplikasi uji mode lemah libtest-1.so
fungsi yang didefinisikan di perpustakaan
'libtest-1.so'
memiliki sub-tipe yang berbeda dari aplikasi apa
'tes-aplikasi'
mengharapkan:

fungsi foo* first_func():
jenis pengembalian diubah:
di menunjuk ke ketik 'struct foo':
ukuran berubah dari 32 menjadi 64 bit
1 penyisipan anggota data:
'char foo::m1', pada offset 32 ​​(dalam bit)

$

Gunakan abicompat online menggunakan layanan onworks.net


Server & Workstation Gratis

Unduh aplikasi Windows & Linux

Perintah Linux

Ad