Jest to polecenie abi-compliance-checker, które można uruchomić w bezpłatnym dostawcy hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
abi-compliance-checker - narzędzie do porównywania kompatybilności ABI współdzielonej biblioteki C/C++
Wersje
OPIS
NAZWA:
Narzędzie sprawdzania zgodności ABI (abi-compliance-checker) Sprawdza kompatybilność wsteczną a
API biblioteki C/C++
OPIS:
Narzędzie do sprawdzania zgodności ABI (ABICC) to narzędzie do sprawdzania wstecznych plików binarnych i
zgodność na poziomie źródłowym współdzielonej biblioteki C/C++. Narzędzie sprawdza pliki nagłówkowe
i współdzielonych bibliotek (*.so) starych i nowych wersji oraz analizuje zmiany w API i
ABI (ABI=API+kompilator ABI), które może zepsuć kompatybilność na poziomie binarnym i/lub na poziomie źródłowym:
zmiany w stosie wywołań, zmiany w tabeli v, usunięte symbole, pola o zmienionych nazwach itp.
Niekompatybilność plików binarnych może skutkować awarią lub nieprawidłowym zachowaniem aplikacji
zbudowane ze starej wersji biblioteki, jeśli działają na nowej. Źródło
niezgodność może skutkować błędami rekompilacji z nową wersją biblioteki.
Narzędzie przeznaczone jest dla twórców bibliotek oprogramowania i opiekunów
systemów operacyjnych, którzy są zainteresowani zapewnieniem kompatybilności wstecznej, tj
stare aplikacje do uruchomienia lub do ponownej kompilacji z nowszymi wersjami bibliotek.
Narzędzie to może być również wykorzystywane przez niezależnych dostawców oprogramowania do sprawdzania możliwości przenoszenia aplikacji na nowe
wersje biblioteczne. Znalezione problemy można uwzględnić podczas dostosowywania
aplikacji do nowej wersji biblioteki.
To narzędzie jest darmowym oprogramowaniem: możesz je rozpowszechniać i/lub modyfikować w ramach
warunki licencji GNU LGPL lub GNU GPL.
STOSOWANIE:
abi-compliance-checker [opcje]
PRZYKŁAD:
sprawdzanie zgodności abi -lib IMIĘ -stary STARY.xml -Nowy NOWOŚĆ.xml
OLD.xml i NEW.xml to deskryptory XML:
1.0
/ścieżka1/do/nagłówków/ /ścieżka2/do/nagłówków/
...
/ścieżka1/do/biblioteki/ /ścieżka2/do/biblioteki/
...
INFORMACJE OPCJE:
-h|-pomoc
Wydrukuj tę pomoc.
-i|-informacje
Wydrukuj pełne informacje.
-v|-wersja
Wydrukuj informacje o wersji.
-dumpwersja
Wydrukuj wersję narzędzia (1.99.14) i nie rób nic więcej.
GENERAŁ OPCJE:
-l|-lib|-library NAZWA
Nazwa biblioteki (bez wersji).
-d1|-stary|-o ŚCIEŻKA
Deskryptor pierwszej (starej) wersji biblioteki. Może to być jeden z poniższych:
1. Deskryptor XML (plik VERSION.xml):
1.0
/ścieżka1/do/nagłówków/ /ścieżka2/do/nagłówków/
...
/ścieżka1/do/biblioteki/ /ścieżka2/do/biblioteki/
...
...
2. Zrzut ABI wygenerowany przez -wysypisko opcja 3. Katalog z nagłówkami i/lub udostępniony
biblioteki 4. Pojedynczy plik nagłówkowy
Jeśli używasz 2-4 typów deskryptorów, powinieneś określić numery wersji
w -v1 i -v2 opcje też.
Aby uzyskać więcej informacji, zobacz:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2|-nowy|-n ŚCIEŻKA
Deskryptor drugiej (nowej) wersji biblioteki.
-wysypisko|-dump-abi ŚCIEŻKA
Utwórz zrzut ABI biblioteki dla wejściowego deskryptora XML. Możesz go przenieść w dowolne miejsce
i pass zamiast deskryptora. Można go również używać do debugowania narzędzia.
Obsługiwane wersje zrzutu ABI: 2.0<=V<=3.2
DODATKOWY OPCJE:
App|-ścieżka aplikacji
Opcja ta pozwala na określenie aplikacji, która ma zostać sprawdzona
przenośność do nowej wersji biblioteki.
-statyczne-libs
Sprawdź biblioteki statyczne zamiast współdzielonych. The sekcja
Deskryptor XML powinien wskazywać lokalizację bibliotek statycznych.
-gcc-ścieżka PATH
Ścieżka do kompilatora krzyżowego GCC, którego należy używać zamiast zwykłego (hosta) GCC.
-gcc-przedrostek PREFIKSÓW
Przedrostek łańcucha narzędzi GCC.
-gcc-opcje OPTY
Dodatkowe opcje kompilatora.
-sysroot DIR
Określ alternatywny katalog główny. Narzędzie wyszuka ścieżki dołączania
katalogi DIR/usr/include i DIR/usr/lib.
-v1|-wersja1 NUM
Określ pierwszą wersję biblioteki poza deskryptorem. Ta opcja jest potrzebna, jeśli
woleli alternatywny typ deskryptora (patrz -d1 opcja).
W ogólnym przypadku powinieneś określić to w deskryptorze XML:
WERSJA
-v2|-wersja2 NUM
Określ drugą wersję biblioteki poza deskryptorem.
-liczb NUM
Określ wersję biblioteki w wygenerowanym zrzucie ABI. The sekcja
wejściowy deskryptor XML zostanie w tym przypadku nadpisany.
-s|-ścisłe
Traktuj wszystkie ostrzeżenia dotyczące zgodności jako problemy. Dodaj liczbę „Niskich” ważności
problemy z wartością zwracaną przez narzędzie.
-tylko nagłówki
Sprawdź pliki nagłówkowe bez bibliotek współdzielonych. Jest łatwy do uruchomienia, ale może zapewnić
raport zgodności o niskiej jakości z fałszywymi alarmami i bez wykrywania
dodane/usunięte symbole.
Alternatywnie możesz wpisać słowo „brak” w pliku sekcja w
Deskryptor XML:
Żaden
-pokaż-retval
Pokaż typ zwracany przez symbol w raporcie.
-symbole-lista PATH
Opcja ta pozwala na określenie pliku z listą symboli (zniekształcone nazwy w
C++), które należy sprawdzić. Inne symbole nie będą sprawdzane.
-lista-typów PATH
Ta opcja pozwala określić plik z listą typów, które powinny być
sprawdzony. Inne typy nie będą sprawdzane.
-pomiń-symbole PATH
Lista symboli, których nie należy sprawdzać.
-typy pomijania PATH
Lista typów, których nie należy sprawdzać.
-lista-nagłówków PATH
Plik z listą nagłówków, które należy sprawdzić/zrzucić.
-pomiń nagłówki PATH
Plik z listą plików nagłówkowych, których nie należy sprawdzać.
-nagłówek IMIĘ
Sprawdź/zrzuć ABI tylko tego nagłówka.
-użyj-zrzutów
Utwórz zrzuty dla dwóch wersji biblioteki i porównaj zrzuty. To powinno wzrosnąć
wydajność narzędzia i zmniejszyć zużycie pamięci systemowej.
-nostdinc
Nie szukaj plików nagłówkowych w standardowych katalogach systemowych GCC.
-zrzut-system IMIĘ -sysroot DIR
Znajdź wszystkie biblioteki współdzielone i pliki nagłówkowe w katalogu DIR, utwórz XML
deskryptorów i wykonaj zrzuty ABI dla każdej biblioteki. Zestaw wyników zrzutów ABI może być
porównany (--cmp-systems) z drugim utworzonym dla innej wersji działania
systemu w celu sprawdzenia ich kompatybilności. Nie zapomnij podać
-cross-gcc opcja, jeśli Twój system docelowy wymaga określonej wersji GCC
kompilator (inny niż host GCC). Systemowy zrzut ABI zostanie wygenerowany do:
sys_dumps/NAZWA/ARCH
-zrzut-system DESCRIPTOR.xml
Taka sama jak poprzednia opcja, ale pobiera deskryptor XML systemu docelowego jako
input, gdzie powinieneś to opisać:
/* Sekcje podstawowe */
/* Nazwa systemu */
/* Lista ścieżek do plików nagłówkowych i/lub
katalogi z plikami nagłówkowymi, po jednym w linii */
/* Lista ścieżek do bibliotek współdzielonych i/lub
katalogi z bibliotekami współdzielonymi, po jednym w wierszu */
/* Sekcje opcjonalne */
/* Lista katalogów do przeszukania
aby pliki nagłówkowe automatycznie generowały ścieżki, po jednej w linii */
/* Lista katalogów do przeszukania
dla bibliotek współdzielonych do rozwiązywania zależności, po jednej na linię */
/* Lista katalogów z używanymi narzędziami
do analizy (łańcuch narzędzi GCC), po jednym na linię */
/* Przedrostek łańcucha narzędzi GCC.
Przykłady:
arm-linux-gnueabi arm-none-symbianelf */
/* Dodatkowe opcje GCC, po jednej na linię */
-sysinfo DIR
Z tej opcji należy korzystać -zrzut-system możliwość zrzucenia ABI operacyjnego
systemów i skonfiguruj proces zrzutu. Próbkę znajdziesz w opakowaniu:
moduły/Cele/{unix, symbian, Windows}
-cmp-systems -d1 sys_dumps/NAME1/ARCH -d2 sys_dumps/NAME2/ARCH
Porównaj dwa systemowe zrzuty ABI. Twórz raporty zgodności dla każdej biblioteki i
wspólny raport HTML zawierający podsumowanie wyników testów dla wszystkich sprawdzanych bibliotek.
Raport zostanie wygenerowany do:
sys_compat_reports/NAME1_to_NAME2/ARCH
-lista-libs PATH
Plik z listą bibliotek, które powinny zostać zrzucone przez -zrzut-system opcja
lub powinien zostać sprawdzony przez -cmp-systems opcja.
-wewnętrzny|-rozszerzony
Jeśli twoja biblioteka A ma być używana przez inną bibliotekę B i chcesz ją kontrolować
ABI B, powinieneś włączyć tę opcję. Narzędzie sprawdzi zmiany
we wszystkich typach danych, nawet jeśli nie są one używane przez żadną funkcję w bibliotece A. Takie
typy danych nie są częścią ABI biblioteki A, ale mogą być częścią ABI biblioteki B
biblioteka.
Krótki schemat to:
aplikacja C (uszkodzona) -> lib B (uszkodzona ABI) -> lib A (stabilna ABI)
-q|-cicho
Wydrukuj wszystkie wiadomości do pliku zamiast stdout i stderr. Domyślna ścieżka (może być
zmienione przez -ścieżka dziennika opcja):
logs/run.log
- stdout
Wydrukuj wyniki analizy (raporty zgodności i zrzuty ABI) na standardowe wyjście zamiast
utworzenie pliku. Umożliwiłoby to przesyłanie danych do innych programów.
-format-raportu FMT
Zmień format raportu zgodności. Formaty:
htm - format HTML (domyślny) xml - format XML
-format-zrzutu FMT
Zmień format zrzutu ABI. Formaty:
perl - Format Data::Dumper (domyślny) xml - format XML
-xml
Alias dla: --format-raportu=xml or --format zrzutu=xml
-długie JĘZYK
Ustaw język biblioteki (C lub C++). Możesz użyć tej opcji, jeśli narzędzie nie może
automatycznie wykrywa język. Ta opcja może być przydatna do sprawdzania nagłówków bibliotek C
(--język=C) w --tylko nagłówki or --przedłużony tryby.
-łuk ŁUK
Ustaw architekturę biblioteki (x86, x86_64, ia64, arm, ppc32, ppc64, s390, ect.). The
opcja jest przydatna, jeśli narzędzie nie może wykryć prawidłowej architektury wejścia
obiekty.
-dwójkowy|-bin|-abi
Pokaż tylko problemy ze zgodnością „Binarną”. Wygeneruj raport do:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-source|-źródło|-api
Pokaż tylko problemy ze zgodnością „Źródła”. Wygeneruj raport do:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-ograniczenie-wpływ LIMIT
Maksymalna liczba dotkniętych symboli podana pod opisem zmiany
wpisz raport.
INNE OPCJE:
-test
Uruchom testy wewnętrzne. Utwórz dwie niezgodne binarnie wersje przykładowej biblioteki i
uruchom narzędzie, aby sprawdzić je pod kątem zgodności. Ta opcja pozwala sprawdzić, czy
narzędzie działa poprawnie w obecnym środowisku.
-zrzut testowy
Testuj możliwość tworzenia, odczytywania i porównywania zrzutów ABI.
-odpluskwić
Tryb debugowania. Wydrukuj informacje debugowania na ekranie. Zapisz pośrednie etapy analizy
w katalogu debugowania:
debugowanie/NAZWA_LIB/WERSJA/
Rozważ także użycie --wysypisko opcja debugowania narzędzia.
-cpp kompatybilny
Jeśli twoje pliki nagłówkowe są napisane w języku C i mogą być kompilowane przez G++
kompilator (tzn. nie używaj słów kluczowych C++), możesz poinformować o tym narzędzie i
przyspieszyć analizę.
-cpp-niekompatybilny
Ustaw tę opcję, jeśli wejściowe pliki nagłówkowe C używają słów kluczowych C++.
-p|-parametry ŚCIEŻKA
Ścieżka do pliku z nazwami parametrów funkcji. Można go wykorzystać do ulepszenia raportu
zobacz, czy pliki nagłówkowe bibliotek nie mają nazw parametrów. Format pliku:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Zamień makra {RELPATH} na PATH w deskryptorze XML używanym do zrzucania biblioteki
ABI (patrz -wysypisko opcja).
-relpath1 PATH
Zamień makra {RELPATH} na PATH w pierwszym deskryptorze XML (-d1).
-relpath2 PATH
Zamień makra {RELPATH} na PATH w drugim deskryptorze XML (-d2).
-ścieżka-zrzutu PATH
Określ ścieżkę pliku *.abi.tar.gz lub *.abi, w którym ma zostać wygenerowany zrzut ABI. Domyślny:
abi_dumps/LIB_NAME/LIB_NAME_VERSION.abi.tar.gz
-sortować
Włącz sortowanie danych w zrzutach ABI.
-ścieżka-raportu PATH
Ścieżka do raportu zgodności. Domyślny:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
-bin-ścieżka-raportu PATH
Ścieżka do raportu zgodności „Binarnego”. Domyślny:
compat_reports/LIB_NAME/V1_to_V2/abi_compat_report.html
-src-ścieżka-raportu PATH
Ścieżka do raportu zgodności „Źródła”. Domyślny:
compat_reports/LIB_NAME/V1_to_V2/src_compat_report.html
-ścieżka dziennika PATH
Ścieżka dziennika dla wszystkich wiadomości. Domyślny:
logs/NAZWA_LIB/WERSJA/log.txt
-log1-ścieżka PATH
Ścieżka dziennika dla pierwszej wersji biblioteki. Domyślny:
logs/LIB_NAME/V1/log.txt
-log2-ścieżka PATH
Ścieżka dziennika dla drugiej wersji biblioteki. Domyślny:
logs/LIB_NAME/V2/log.txt
-tryb-logowania TRYB
Zmień tryb rejestrowania. Tryby:
w - nadpisz stare logi (domyślnie) a - dołącz stare logi n - nie zapisuj żadnych logów
-dotyczy listy
Wygeneruj plik z listą niekompatybilnych symboli obok kompatybilności HTML
raport. Użyj polecenia „c++filt @file” z GNU binutils, aby rozdzielić symbole C++
wygenerowany plik. Domyślne nazwy:
abi_affected.txt src_affected.txt
-składnik IMIĘ
Nazwa komponentu w tytule i podsumowaniu raportu HTML. Domyślny:
biblioteka
-tytuł IMIĘ
Zmień nazwę biblioteki w tytule raportu na NAZWA. Domyślnie wyświetli się a
nazwa określona przez -l opcja.
-Informacje dodatkowe DIR
Zrzuć dodatkowe informacje do DIR.
-dodatkowy zrzut
Utwórz rozszerzony zrzut ABI zawierający wszystkie symbole z jednostki tłumaczeniowej.
-siła
Spróbuj użyć tej opcji, jeśli narzędzie nie działa.
-tolerancja POZIOM
Zastosuj zestaw heurystyk, aby pomyślnie skompilować wejściowe pliki nagłówkowe. Możesz
włączyć kilka poziomów tolerancji łącząc je w jeden ciąg (np. 13, 124,
itp.). Poziomy:
1 - pomiń nagłówki inne niż Linux (np. win32_*.h itp.) 2 - pomiń nagłówki wewnętrzne (np.
*_p.h, impl/*.h itp.) 3 - pomiń nagłówki zawierające nagłówki inne niż Linux 4 - pomiń
nagłówki dołączone przez innych
-tolerancyjny
Włącz najwyższy poziom tolerancji [1234].
-czek
Sprawdź kompletność zrzutu ABI.
-szybki
Szybka analiza. Wyłącz sprawdzanie niektórych instancji szablonu.
-pomiń-symbole-wewnętrzne WZÓR
Nie sprawdzaj symboli pasujących do wzorca.
-pomiń-typy-wewnętrzne WZÓR
Nie sprawdzaj typów pasujących do wzorca.
RAPORT:
Raport zgodności zostanie wygenerowany do:
compat_reports/LIB_NAME/V1_to_V2/compat_report.html
Dziennik zostanie wygenerowany do:
logs/LIB_NAME/V1/log.txt logs/LIB_NAME/V2/log.txt
EXIT KODY:
0 - Kompatybilny. Narzędzie uruchomiło się bez żadnych błędów. niezerowe - Niekompatybilne lub
narzędzie uruchomiło się z błędami.
WIĘCEJ INFORMACJE:
http://lvc.github.io/abi-compliance-checker/
Użyj abi-compliance-checker online, korzystając z usług onworks.net