Ini ialah perintah abi-compliance-checker 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
abi-compliance-checker - alat untuk membandingkan keserasian ABI pustaka C/C++ kongsi
versi
DESCRIPTION
NAMA:
Pemeriksa Pematuhan ABI (pemeriksa pematuhan abi) Semak keserasian ke belakang a
API perpustakaan C/C++
HURAIAN:
Pemeriksa Pematuhan ABI (ABICC) ialah alat untuk menyemak binari ke belakang dan
keserasian peringkat sumber bagi pustaka C/C++ yang dikongsi. Alat ini menyemak fail pengepala
dan perpustakaan kongsi (*.so) versi lama dan baharu serta menganalisis perubahan dalam API dan
ABI (ABI=API+compiler ABI) yang mungkin memecahkan keserasian peringkat binari dan/atau sumber:
perubahan dalam timbunan panggilan, perubahan jadual-v, simbol yang dialih keluar, medan yang dinamakan semula, dsb.
Ketidakserasian binari boleh mengakibatkan ranap atau gelagat aplikasi yang salah
dibina dengan versi lama perpustakaan jika ia dijalankan pada perpustakaan baharu. Sumber
ketidakserasian boleh mengakibatkan ralat penyusunan semula dengan versi perpustakaan baharu.
Alat ini bertujuan untuk pembangun perpustakaan perisian dan penyelenggara
sistem pengendalian yang berminat untuk memastikan keserasian ke belakang, iaitu membenarkan
aplikasi lama untuk dijalankan atau untuk disusun semula dengan versi perpustakaan yang lebih baharu.
Alat ini juga boleh digunakan oleh ISV untuk menyemak kemudahalihan aplikasi kepada yang baru
versi perpustakaan. Isu yang ditemui boleh diambil kira semasa menyesuaikan
aplikasi kepada versi perpustakaan baharu.
Alat ini adalah perisian percuma: anda boleh mengedarkannya semula dan/atau mengubah suainya di bawah
syarat GNU LGPL atau GNU GPL.
PENGGUNAAN:
abi-compliance-checker [pilihan]
CONTOH:
pemeriksa pematuhan abi -lib NAMA -tua OLD.xml -baru NEW.xml
OLD.xml dan NEW.xml ialah deskriptor XML:
1.0
/path1/to/header(s)/ /path2/to/header(s)/
...
/path1/to/library(ies)/ /path2/to/library(ies)/
...
SYARIKAT PILIHAN:
-h|-bantuan
Cetak bantuan ini.
-i|-maklumat
Cetak maklumat lengkap.
-v|-versi
Maklumat versi cetakan.
-pembuangan
Cetak versi alat (1.99.14) dan jangan lakukan apa-apa lagi.
UMUM PILIHAN:
-l|-lib|-perpustakaan NAMA
Nama perpustakaan (tanpa versi).
-d1|-lama|-o LALUAN
Deskriptor versi perpustakaan pertama (lama). Ia mungkin salah satu daripada yang berikut:
1. XML-deskriptor (VERSION.xml fail):
1.0
/path1/to/header(s)/ /path2/to/header(s)/
...
/path1/to/library(ies)/ /path2/to/library(ies)/
...
...
2. Longgokan ABI dijana oleh -pembuangan pilihan 3. Direktori dengan pengepala dan/atau dikongsi
perpustakaan 4. Fail pengepala tunggal
Jika anda menggunakan 2-4 jenis deskriptor maka anda harus menentukan nombor versi
bersama -v1 and -v2 pilihan juga.
Untuk maklumat lanjut, sila lihat:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-baharu|-n LALUAN
Deskriptor versi perpustakaan ke-2 (baharu).
-pembuangan|-dump-abi LALUAN
Cipta longgokan ABI perpustakaan untuk deskriptor XML input. Anda boleh memindahkannya ke mana-mana sahaja
dan lulus bukannya deskriptor. Juga ia boleh digunakan untuk menyahpepijat alat.
Versi pembuangan ABI yang disokong: 2.0<=V<=3.2
EXTRA PILIHAN:
-aplikasi|-APLIKASI LALUAN
Pilihan ini membolehkan seseorang untuk menentukan aplikasi yang perlu disemak
mudah alih kepada versi perpustakaan baharu.
-statik-libs
Semak perpustakaan statik dan bukannya perpustakaan yang dikongsi. The bahagian daripada
XML-deskriptor harus menunjuk ke lokasi perpustakaan statik.
-gcc-path PATH
Laluan ke pengkompil GCC silang untuk digunakan dan bukannya GCC (hos) biasa.
-gcc-prefix PERMULAAN
Awalan rantai alat GCC.
-gcc-options OPTS
Pilihan penyusun tambahan.
-sysroot DIR
Tentukan direktori akar alternatif. Alat ini akan mencari laluan masuk
direktori DIR/usr/include dan DIR/usr/lib.
-v1|-versi1 NUM
Tentukan versi perpustakaan pertama di luar deskriptor. Pilihan ini diperlukan jika anda
telah memilih jenis deskriptor alternatif (lihat -d1 pilihan).
Dalam kes umum, anda harus menyatakannya dalam deskriptor XML:
VERSION
-v2|-versi2 NUM
Tentukan versi perpustakaan ke-2 di luar deskriptor.
-vnum NUM
Tentukan versi perpustakaan dalam pembuangan ABI yang dijana. The bahagian daripada
input deskriptor XML akan ditimpa dalam kes ini.
-s|-ketat
Anggap semua amaran keserasian sebagai masalah. Tambahkan beberapa keterukan "Rendah".
masalah kepada nilai pulangan alat.
-tajuk-sahaja
Semak fail pengepala tanpa perpustakaan kongsi. Ia mudah dijalankan, tetapi mungkin memberikan a
laporan keserasian kualiti rendah dengan positif palsu dan tanpa mengesan
simbol ditambah/dialih keluar.
Sebagai alternatif anda boleh menulis perkataan "tiada" pada bahagian dalam
XML-deskriptor:
tiada
-pertunjukkan semula
Tunjukkan jenis pemulangan simbol dalam laporan.
-simbol-senarai PATH
Pilihan ini membenarkan seseorang untuk menentukan fail dengan senarai simbol (nama hancur dalam
C++) yang perlu diperiksa. Simbol lain tidak akan disemak.
-senarai-jenis PATH
Pilihan ini membolehkan seseorang menentukan fail dengan senarai jenis yang sepatutnya
diperiksa. Jenis lain tidak akan disemak.
-langkau-simbol PATH
Senarai simbol yang tidak boleh disemak.
-jenis-skip PATH
Senarai jenis yang tidak boleh disemak.
-senarai tajuk PATH
Fail dengan senarai pengepala, yang harus disemak/dibuang.
-skip-headers PATH
Fail dengan senarai fail pengepala, yang tidak boleh disemak.
-kepala NAMA
Semak/Buang ABI pengepala ini sahaja.
-guna-buangan
Buat longgokan untuk dua versi pustaka dan bandingkan longgokan. Ini sepatutnya meningkat
prestasi alat dan mengurangkan penggunaan memori sistem.
-nostdinc
Jangan cari dalam direktori sistem standard GCC untuk fail pengepala.
-sistem pembuangan NAMA -sysroot DIR
Cari semua perpustakaan kongsi dan fail pengepala dalam direktori DIR, buat XML
deskriptor dan membuat pembuangan ABI untuk setiap perpustakaan. Set hasil pembuangan ABI boleh
dibandingkan (--cmp-systems) dengan yang satu lagi dicipta untuk versi operasi lain
sistem untuk menyemaknya untuk keserasian. Jangan lupa nyatakan
-cross-gcc pilihan jika sistem sasaran anda memerlukan beberapa versi GCC tertentu
pengkompil (berbeza daripada GCC hos). Longgokan ABI sistem akan dijana kepada:
sys_dumps/NAME/ARCH
-sistem pembuangan DESCRIPTOR.xml
Sama seperti pilihan sebelumnya tetapi mengambil deskriptor XML sistem sasaran sebagai
input, di mana anda harus menerangkannya:
/* Bahagian utama */
/* Nama sistem */
/* Senarai laluan ke fail pengepala dan/atau
direktori dengan fail pengepala, satu setiap baris */
/* Senarai laluan ke perpustakaan kongsi dan/atau
direktori dengan perpustakaan kongsi, satu setiap baris */
/* Bahagian pilihan */
/* Senarai direktori yang hendak dicari
untuk fail pengepala menjana secara automatik termasuk laluan, satu setiap baris */
/* Senarai direktori yang hendak dicari
untuk perpustakaan kongsi untuk menyelesaikan kebergantungan, satu setiap baris */
/* Senarai direktori dengan alatan yang digunakan
untuk analisis (rantai alat GCC), satu setiap baris */
/* Awalan rantai alat GCC.
Contoh:
arm-linux-gnueabi arm-none-symbianelf */
/* Pilihan GCC tambahan, satu setiap baris */
-sysinfo DIR
Pilihan ini harus digunakan dengan -sistem pembuangan pilihan untuk membuang ABI operasi
sistem dan mengkonfigurasi proses lambakan. Anda boleh mendapatkan sampel dalam pakej:
modul/Sasaran/{unix, symbian, windows}
-cmp-sistem -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Bandingkan dua pembuangan ABI sistem. Buat laporan keserasian untuk setiap perpustakaan dan
laporan HTML biasa termasuk ringkasan keputusan ujian untuk semua perpustakaan yang disemak.
Laporan akan dijana kepada:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-senarai PATH
Fail dengan senarai perpustakaan, yang harus dibuang oleh -sistem pembuangan pilihan
atau perlu disemak oleh -cmp-sistem pilihan.
-samb|-dilanjutkan
Jika perpustakaan A anda sepatutnya digunakan oleh perpustakaan B lain dan anda ingin mengawal
ABI B, maka anda harus mendayakan pilihan ini. Alat akan menyemak perubahan
dalam semua jenis data, walaupun ia tidak digunakan oleh mana-mana fungsi dalam perpustakaan A. Seumpamanya
jenis data bukan sebahagian daripada ABI perpustakaan, tetapi mungkin sebahagian daripada ABI B
perpustakaan.
Skim ringkasnya ialah:
apl C (pecah) -> lib B (ABI rosak) -> lib A (ABI stabil)
-q|-senyap
Cetak semua mesej ke fail dan bukannya stdout dan stderr. Laluan lalai (boleh
diubah oleh -laluan-log pilihan):
log/run.log
-stdout
Cetak keputusan analisis (laporan keserasian dan pembuangan ABI) kepada stdout dan bukannya
mencipta fail. Ini akan membolehkan data paip ke program lain.
-format-laporan FMT
Tukar format laporan keserasian. Format:
htm - Format HTML (lalai) xml - Format XML
-format-dump FMT
Tukar format pembuangan ABI. Format:
perl - Data::Format Dumper (lalai) xml - Format XML
-xml
Alias ​​untuk: --format-laporan=xml or --format-dump=xml
-bahasa BAHASA
Tetapkan bahasa perpustakaan (C atau C++). Anda boleh menggunakan pilihan ini jika alat itu tidak boleh
auto-kesan bahasa. Pilihan ini mungkin berguna untuk menyemak pengepala C-library
(--lang=C) dalam --headers-sahaja or --dilanjutkan mod.
-gerbang ARCH
Tetapkan seni bina perpustakaan (x86, x86_64, ia64, lengan, ppc32, ppc64, s390, dsb.). The
pilihan berguna jika alat tidak dapat mengesan seni bina input yang betul
objek.
-perduaan|-bin|-abi
Tunjukkan masalah keserasian "Binari" sahaja. Hasilkan laporan kepada:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-sumber|-src|-api
Tunjukkan masalah keserasian "Sumber" sahaja. Hasilkan laporan kepada:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-had-terjejas HAD
Bilangan maksimum simbol terjejas yang disenaraikan di bawah perihalan perubahan
taip laporan.
LAIN PILIHAN:
-test
Jalankan ujian dalaman. Cipta dua versi tidak serasi binari bagi perpustakaan sampel dan
jalankan alat untuk menyemaknya untuk keserasian. Pilihan ini membolehkan seseorang menyemak sama ada
alat berfungsi dengan betul dalam persekitaran semasa.
-dump-ujian
Uji keupayaan untuk mencipta, membaca dan membandingkan pembuangan ABI.
-nyahpepijat
Mod nyahpepijat. Cetak maklumat nyahpepijat pada skrin. Simpan peringkat analisis pertengahan
dalam direktori nyahpepijat:
nyahpepijat/LIB_NAME/VERSION/
Pertimbangkan juga untuk menggunakan --pembuangan pilihan untuk menyahpepijat alat.
-cpp-serasi
Jika fail pengepala anda ditulis dalam bahasa C dan boleh disusun oleh G++
pengkompil (iaitu jangan gunakan kata kunci C++), maka anda boleh memberitahu alat tentang ini dan
mempercepatkan analisis.
-cpp-tidak serasi
Tetapkan pilihan ini jika fail pengepala C input menggunakan kata kunci C++.
-p|-params LALUAN
Laluan ke fail dengan nama parameter fungsi. Ia boleh digunakan untuk menambah baik laporan
lihat jika fail pengepala perpustakaan tidak mempunyai nama parameter. Format fail:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Gantikan makro {RELPATH} kepada PATH dalam deskriptor XML yang digunakan untuk membuang pustaka
ABI (lihat -pembuangan pilihan).
-relpath1 PATH
Gantikan makro {RELPATH} kepada PATH dalam deskriptor XML pertama (-d1).
-relpath2 PATH
Gantikan makro {RELPATH} kepada PATH dalam deskriptor XML ke-2 (-d2).
-laluan pembuangan PATH
Tentukan laluan fail *.abi.tar.gz atau *.abi tempat untuk menjana pembuangan ABI. Lalai:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-susun
Dayakan pengisihan data dalam pembuangan ABI.
-laluan-laporan PATH
Laluan ke laporan keserasian. Lalai:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-laluan-laporan-bin PATH
Laluan ke laporan keserasian "Perduaan". Lalai:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-laluan-laporan-src PATH
Laluan ke laporan keserasian "Sumber". Lalai:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-laluan-log PATH
Laluan log untuk semua mesej. Lalai:
log/LIB_NAME/VERSION/log.txt
-log1-laluan PATH
Laluan log untuk versi pertama perpustakaan. Lalai:
log/LIB_NAME/V1/log.txt
-log2-laluan PATH
Laluan log untuk versi ke-2 perpustakaan. Lalai:
log/LIB_NAME/V2/log.txt
-mod-log MODE
Tukar mod pengelogan. Mod:
w - tulis ganti log lama (lalai) a - tambah log lama n - jangan tulis sebarang log
-senarai-terjejas
Hasilkan fail dengan senarai simbol yang tidak serasi di sebelah keserasian HTML
laporan. Gunakan arahan 'c++filt @file' daripada GNU binutils untuk membongkar simbol C++
fail yang dihasilkan. Nama lalai:
abi_affected.txt src_affected.txt
-komponen NAMA
Nama komponen dalam tajuk dan ringkasan laporan HTML. Lalai:
perpustakaan
-tajuk NAMA
Tukar nama perpustakaan dalam tajuk laporan kepada NAME. Secara lalai akan dipaparkan a
nama yang ditentukan oleh -l pilihan.
-maklumat-tambahan DIR
Buang maklumat tambahan kepada DIR.
-buangan tambahan
Buat pembuangan ABI lanjutan yang mengandungi semua simbol daripada unit terjemahan.
-paksa
Cuba gunakan pilihan ini jika alat itu tidak berfungsi.
-toleransi LEVEL
Gunakan satu set heuristik untuk berjaya menyusun fail pengepala input. Awak boleh
dayakan beberapa tahap toleransi dengan menggabungkannya menjadi satu rentetan (cth 13, 124,
dan lain-lain.). peringkat:
1 - langkau pengepala bukan Linux (cth win32_*.h, dsb.) 2 - langkau pengepala dalaman (cth
*_p.h, impl/*.h, dsb.) 3 - langkau pengepala yang termasuk pengepala bukan Linux 4 - langkau
tajuk disertakan oleh orang lain
-toleran
Dayakan tahap toleransi tertinggi [1234].
-semak
Semak kelengkapan tempat pembuangan ABI.
-cepat
Analisis cepat. Lumpuhkan semakan beberapa contoh templat.
-langkau-dalam-simbol CORAK
Jangan semak simbol yang dipadankan dengan corak.
-langkau-jenis-dalam CORAK
Jangan semak jenis yang dipadankan dengan corak.
LAPORAN:
Laporan keserasian akan dijana kepada:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Log akan dijana kepada:
log/LIB_NAME/V1/log.txt log/LIB_NAME/V2/log.txt
EXIT KOD:
0 - Serasi. Alat telah berjalan tanpa sebarang ralat. bukan sifar - Tidak serasi atau
alat telah berjalan dengan ralat.
MORE MAKLUMAT:
http://lvc.github.io/abi-compliance-checker/
Gunakan abi-compliance-checker dalam talian menggunakan perkhidmatan onworks.net