Aceasta este comanda abi-compliance-checker care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
abi-compliance-checker - instrument pentru a compara compatibilitatea ABI a bibliotecii partajate C/C++
Versiunile
DESCRIERE
NUME:
ABI Compliance Checker (abi-compliance-checker) Verificați compatibilitatea cu versiunea anterioară a a
API-ul bibliotecii C/C++
DESCRIERE:
ABI Compliance Checker (ABICC) este un instrument pentru verificarea binarului înapoi și
compatibilitatea la nivel de sursă a unei biblioteci C/C++ partajate. Instrumentul verifică fișierele antet
și biblioteci partajate (*.so) ale versiunilor vechi și noi și analizează modificările API și
ABI (ABI=API+compiler ABI) care poate rupe compatibilitatea binară și/sau la nivel de sursă:
modificări în stiva de apeluri, modificări v-table, simboluri eliminate, câmpuri redenumite etc.
Incompatibilitatea binară poate duce la blocarea sau un comportament incorect al aplicațiilor
construit cu o versiune veche a unei biblioteci dacă rulează pe una nouă. Sursă
incompatibilitatea poate duce la erori de recompilare cu o nouă versiune de bibliotecă.
Instrumentul este destinat dezvoltatorilor de biblioteci software și întreținătorilor de
sisteme de operare care sunt interesate să asigure compatibilitatea cu versiunea anterioară, adică să permită
aplicații vechi să ruleze sau să fie recompilate cu versiuni mai noi de bibliotecă.
De asemenea, instrumentul poate fi folosit de ISV-uri pentru a verifica portabilitatea aplicațiilor la noi
versiuni de bibliotecă. Problemele găsite pot fi luate în considerare la adaptarea
aplicație la o nouă versiune de bibliotecă.
Acest instrument este software gratuit: îl puteți redistribui și/sau modifica sub
termenii GNU LGPL sau GNU GPL.
UTILIZARE:
abi-compliance-checker [opțiuni]
EXEMPLU:
abi-compliance-checker -lib NUME -vechi OLD.xml -nou NOU.xml
OLD.xml și NEW.xml sunt descriptori XML:
1.0
/path1/to/header(e)/ /path2/the/header(e)/
...
/cale1/la/biblioteca(i)/ /calea2/la/biblioteca(i)/
...
INFORMAŢII OPȚIUNI:
-h|-ajutor
Imprimați acest ajutor.
-i|-info
Tipăriți informații complete.
-v|-versiunea
Informații despre versiunea tipărită.
-versiunea de gunoi
Imprimați versiunea instrumentului (1.99.14) și nu faceți nimic altceva.
GENERAL OPȚIUNI:
-l|-lib|-bibliotecă NUME
Numele bibliotecii (fără versiune).
-d1|-vechi|-o CALEA
Descriptorul primei versiuni de bibliotecă (veche). Poate fi una dintre următoarele:
1. Descriptor XML (fișier VERSION.xml):
1.0
/path1/to/header(e)/ /path2/the/header(e)/
...
/cale1/la/biblioteca(i)/ /calea2/la/biblioteca(i)/
...
...
2. Dump ABI generat de - haldă opțiunea 3. Director cu anteturi și/sau partajat
biblioteci 4. Fișier antet unic
Dacă utilizați 2-4 tipuri de descriptor, atunci ar trebui să specificați numerele de versiune
cu -v1 și -v2 opțiuni.
Pentru mai multe informații, consultați:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-new|-n PATH
Descriptorul celei de-a doua (noue) versiuni de bibliotecă.
- haldă|-dump-abi CALEA
Creați un dump ABI al bibliotecii pentru descriptorul XML de intrare. Îl poți transfera oriunde
și trece în locul descriptorului. De asemenea, poate fi folosit pentru depanarea instrumentului.
Versiuni acceptate de dump ABI: 2.0<=V<=3.2
EXTRA OPȚIUNI:
App|-application PATH
Această opțiune vă permite să specificați aplicația pentru care ar trebui verificată
portabilitate la noua versiune de bibliotecă.
-static-libs
Verificați bibliotecile statice în loc de cele partajate. The sectiunea a
Descriptorul XML ar trebui să indice locația bibliotecilor statice.
-gcc-cale PATH
Calea către compilatorul GCC încrucișat de utilizat în locul GCC obișnuit (gazdă).
-gcc-prefix PREFIX
Prefixul lanțului de instrumente GCC.
-gcc-opțiuni OPTS
Opțiuni suplimentare ale compilatorului.
-syroot DIR
Specificați directorul rădăcină alternativ. Instrumentul va căuta include căi în
directoarele DIR/usr/include și DIR/usr/lib.
-v1|-versiunea 1 NUM
Specificați prima versiune de bibliotecă în afara descriptorului. Această opțiune este necesară dacă
au preferat un tip de descriptor alternativ (vezi -d1 opțiune).
În general, ar trebui să îl specificați în descriptorul XML:
VERSIUNE
-v2|-versiunea 2 NUM
Specificați a doua versiune de bibliotecă în afara descriptorului.
-vnum NUM
Specificați versiunea bibliotecii în dump-ul ABI generat. The sectiunea a
descriptorul XML de intrare va fi suprascris în acest caz.
-s|-strict
Tratați toate avertismentele de compatibilitate drept probleme. Adăugați un număr de severitate „Scăzut”.
probleme la valoarea de returnare a instrumentului.
-doar antete
Verificați fișierele antet fără biblioteci partajate. Este ușor de rulat, dar poate oferi a
raport de compatibilitate de calitate scăzută cu false pozitive și fără detectarea
simboluri adăugate/eliminate.
Alternativ, puteți scrie cuvântul „niciun” la secțiunea din
Descriptor XML:
nici unul
-show-retval
Afișați tipul de returnare al simbolului în raport.
-lista-simboluri PATH
Această opțiune vă permite să specificați un fișier cu o listă de simboluri (nume stricate în
C++) care ar trebui verificat. Alte simboluri nu vor fi verificate.
-lista-tipuri PATH
Această opțiune vă permite să specificați un fișier cu o listă de tipuri care ar trebui să fie
verificat. Alte tipuri nu vor fi verificate.
-salta-simboluri PATH
Lista simbolurilor care nu trebuie verificate.
-tipuri de sărituri PATH
Lista de tipuri care nu ar trebui verificate.
-listă-anteturi PATH
Fișierul cu o listă de anteturi, care ar trebui verificate/cumpărate.
-săriți anteturile PATH
Fișierul cu lista de fișiere antet, care nu trebuie verificat.
-antet NUME
Verificați/Dump ABI numai pentru acest antet.
-haldele de utilizare
Faceți depozite pentru două versiuni ale unei biblioteci și comparați depozitele. Acest lucru ar trebui să crească
performanța instrumentului și reducerea utilizării memoriei sistemului.
-nostdinc
Nu căutați în directoarele de sistem standard GCC fișiere antet.
-sistem-basculantă NUME -syroot DIR
Găsiți toate bibliotecile partajate și fișierele antet în directorul DIR, creați XML
descriptori și faceți depozite ABI pentru fiecare bibliotecă. Setul de rezultate de depozite ABI poate fi
comparat (--cmp-sisteme) cu celălalt creat pentru altă versiune de operare
sistem pentru a le verifica compatibilitatea. Nu uitați să specificați
-cross-gcc opțiune dacă sistemul dvs. țintă necesită o anumită versiune a GCC
compilator (diferit de GCC gazdă). Dump-ul ABI al sistemului va fi generat pentru:
sys_dumps/NAME/ARCH
-sistem-basculantă DESCRIPTOR.xml
La fel ca și opțiunea anterioară, dar ia un descriptor XML al sistemului țintă ca
intrare, unde ar trebui să o descrieți:
/* Secțiuni primare */
/* Numele sistemului */
/* Lista căilor către fișierele antet și/sau
directoare cu fișiere antet, câte unul pe linie */
/* Lista de căi către bibliotecile partajate și/sau
directoare cu biblioteci partajate, unul pe linie */
/* Secțiuni opționale */
/* Lista directoarelor care trebuie căutate
pentru ca fișierele de antet să genereze automat căi includ, una pe linie */
/* Lista directoarelor care trebuie căutate
pentru bibliotecile partajate pentru a rezolva dependențe, una pe linie */
/* Lista directoarelor cu instrumentele folosite
pentru analiză (lanțul de instrumente GCC), unul pe linie */
/* Prefixul lanțului de instrumente GCC.
Exemple:
arm-linux-gnueabi arm-none-symbianelf */
/* Opțiuni GCC suplimentare, una pe linie */
-sysinfo DIR
Această opțiune ar trebui folosită cu -sistem-basculantă opțiunea de a descărca ABI de operare
sisteme și configurați procesul de dumping. Puteți găsi o mostră în pachet:
module/Targets/{unix, symbian, windows}
-sisteme-cmp -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Comparați două depozite ABI de sistem. Creați rapoarte de compatibilitate pentru fiecare bibliotecă și
raport HTML comun, inclusiv rezumatul rezultatelor testelor pentru toate bibliotecile verificate.
Raportul va fi generat pentru:
sys_compat_reports/NAME1_to_NAME2/ARCH
-libs-list PATH
Fișierul cu o listă de biblioteci, care ar trebui să fie aruncat de către -sistem-basculantă opțiune
sau ar trebui verificat de către -sisteme-cmp opțiune.
-ext|-extins
Dacă biblioteca dvs. A ar trebui să fie utilizată de altă bibliotecă B și doriți să controlați
ABI din B, atunci ar trebui să activați această opțiune. Instrumentul va verifica dacă există modificări
în toate tipurile de date, chiar dacă nu sunt utilizate de nicio funcție din biblioteca A. Astfel
Tipurile de date nu fac parte din ABI bibliotecii A, dar pot face parte din ABI din B
bibliotecă.
Schema scurtă este:
aplicația C (încărcat) -> lib B (abi rupt) -> lib A (ABI stabil)
-q|-liniște
Tipăriți toate mesajele în fișier în loc de stdout și stderr. Calea implicită (poate fi
schimbat de -log-path opțiune):
logs/run.log
-stdout
Imprimați rezultatele analizei (rapoarte de compatibilitate și depozite ABI) în stdout în loc de
crearea unui fișier. Acest lucru ar permite transmiterea datelor către alte programe.
-format-raport FMT
Schimbați formatul raportului de compatibilitate. Formate:
htm - format HTML (implicit) xml - format XML
-dump-format FMT
Schimbați formatul de descărcare ABI. Formate:
perl - Data::Format Dumper (implicit) xml - Format XML
-xml
Alias pentru: --format-raport=xml or --format-dump=xml
-Long LIMBA
Setați limbajul bibliotecii (C sau C++). Puteți utiliza această opțiune dacă instrumentul nu poate
detectează automat o limbă. Această opțiune poate fi utilă pentru verificarea antetelor bibliotecii C
(--lang=C) în --doar antete or --extins moduri.
-arc ARC
Setați arhitectura bibliotecii (x86, x86_64, ia64, arm, ppc32, ppc64, s390, etc.). The
opțiunea este utilă dacă instrumentul nu poate detecta arhitectura corectă a intrării
obiecte.
-binar|-bin|-abi
Afișați numai problemele de compatibilitate „Binară”. Generați raport pentru:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-sursă|-src|-api
Afișați numai problemele de compatibilitate „Sursă”. Generați raport pentru:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-limita-afectata LIMITĂ
Numărul maxim de simboluri afectate enumerate sub descrierea modificării
introduceți raportul.
ALTE OPȚIUNI:
-Test
Rulați teste interne. Creați două versiuni binare incompatibile ale unei biblioteci de mostre și
rulați instrumentul pentru a le verifica compatibilitatea. Această opțiune vă permite să verificați dacă
instrumentul funcționează corect în mediul actual.
-test-dump
Testați capacitatea de a crea, citi și compara depozite ABI.
- depanare
Mod de depanare. Tipăriți informațiile de depanare pe ecran. Salvați etapele intermediare de analiză
în directorul de depanare:
depanare/LIB_NAME/VERSION/
Luați în considerare și utilizarea --descărcare opțiune pentru depanarea instrumentului.
-compatibil cu cpp
Dacă fișierele de antet sunt scrise în limbaj C și pot fi compilate de G++
compilator (adică nu folosiți cuvinte cheie C++), atunci puteți spune instrumentului despre acest lucru și
accelerarea analizei.
-cpp-incompatibil
Setați această opțiune dacă fișierele de antet C de intrare folosesc cuvinte cheie C++.
-p|-params PATH
Calea către fișierul cu numele parametrilor funcției. Poate fi folosit pentru îmbunătățirea raportului
vizualizați dacă fișierele antet bibliotecii nu au nume de parametri. Tipul fisierului:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Înlocuiți macrocomenzile {RELPATH} cu PATH în descriptorul XML utilizat pentru descărcarea bibliotecii
ABI (vezi - haldă opțiune).
-relpath1 PATH
Înlocuiți macrocomenzi {RELPATH} în PATH în primul descriptor XML (-d1).
-relpath2 PATH
Înlocuiți macrocomenzi {RELPATH} cu PATH în al doilea descriptor XML (-d2).
-dump-path PATH
Specificați o cale de fișier *.abi.tar.gz sau *.abi unde să generați un dump ABI. Mod implicit:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-fel
Activați sortarea datelor în depozitele ABI.
-cale-raport PATH
Calea către raportul de compatibilitate. Mod implicit:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-report-path PATH
Calea către raportul de compatibilitate „Binar”. Mod implicit:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-raport-cale PATH
Calea către raportul de compatibilitate „Sursă”. Mod implicit:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-log-path PATH
Calea jurnalului pentru toate mesajele. Mod implicit:
logs/LIB_NAME/VERSION/log.txt
-log1-cale PATH
Calea jurnalului pentru prima versiune a unei biblioteci. Mod implicit:
logs/LIB_NAME/V1/log.txt
-log2-cale PATH
Calea jurnalului pentru a doua versiune a unei biblioteci. Mod implicit:
logs/LIB_NAME/V2/log.txt
-modul de înregistrare MODE
Schimbați modul de înregistrare. Moduri:
w - suprascrieți jurnalele vechi (implicit) a - adăugați jurnale vechi n - nu scrieți niciun log
-lista-afectate
Generați fișierul cu lista de simboluri incompatibile lângă compatibilitatea HTML
raport. Utilizați comanda „c++filt @file” din GNU binutils pentru a dezmembra simbolurile C++
fișierul generat. Nume implicite:
abi_affected.txt src_affected.txt
-componenta NUME
Numele componentei din titlul și rezumatul raportului HTML. Mod implicit:
bibliotecă
-titlu NUME
Schimbați numele bibliotecii din titlul raportului în NAME. În mod implicit va fi afișat a
nume specificat de -l opțiune.
-informații suplimentare DIR
Transferați informații suplimentare în DIR.
-extra-haldă
Creați un dump ABI extins care conține toate simbolurile din unitatea de traducere.
-forta
Încercați să utilizați această opțiune dacă instrumentul nu funcționează.
-toleranţă NIVEL
Aplicați un set de euristici pentru a compila cu succes fișierele de antet de intrare. Poti
activați mai multe niveluri de toleranță unindu-le într-un singur șir (de ex. 13, 124,
etc.). Niveluri:
1 - omite anteturile non-Linux (de ex. win32_*.h, etc.) 2 - ignoră anteturile interne (de ex.
*_p.h, impl/*.h, etc.) 3 - ignorați anteturile care includ anteturi non-Linux 4 - ignorați
anteturi incluse de alții
-tolerant
Activați cel mai înalt nivel de toleranță [1234].
-Verifica
Verificați caracterul complet al depozitului ABI.
-rapid
Analiză rapidă. Dezactivați verificarea unor instanțe de șablon.
-salta-simboluri-interne MODEL
Nu verificați simbolurile potrivite cu modelul.
-sări-tipuri-interne MODEL
Nu verificați tipurile potrivite cu modelul.
RAPORT:
Raportul de compatibilitate va fi generat pentru:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Jurnalul va fi generat pentru:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT CODURI:
0 - Compatibil. Instrumentul a rulat fără erori. non-zero - Incompatibil sau
instrumentul a rulat cu erori.
MAI MULT INFORMAȚII:
http://lvc.github.io/abi-compliance-checker/
Utilizați abi-compliance-checker online folosind serviciile onworks.net