abicompat(1): Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| (En mellanliggande sidversion av samma användare visas inte) | |||
| Rad 1: | Rad 1: | ||
= abicompat(1) = | |||
== | == NAMN == | ||
abicompat – kontrollera ABI-kompatibilitet | |||
abicompat kontrollerar att ett program som länkar mot ett givet delat bibliotek fortfarande är ABI-kompatibelt med en senare version av detta bibliotek. Om den nya versionen av biblioteket introducerar en ABI-inkompatibilitet, ger abicompat ledtrådar om exakt vad inkompatibiliteten består i. | |||
=== | == ANROP == | ||
<pre> | |||
abicompat [flaggor] [<program> <delat-bibliotek-första-version> <delat-bibliotek-andra-version>] | |||
</pre> | |||
=== | == FLAGGOR == | ||
'''--help''' | |||
Visar kort hjälptext om kommandot och avslutar. | |||
'''--version''', '''-v''' | |||
Visar programmets versionsinformation och avslutar. | |||
'''--list-undefined-symbols''', '''-u''' | |||
Visar en lista över odefinierade symboler i programmet och avslutar. | |||
'''--show-base-names''', '''-b''' | |||
I rapporten som genereras gör denna flagga att program och bibliotek refereras med endast sina basnamn istället för fullständiga sökvägar. Detta är användbart i skript där man vill jämföra namn oberoende av katalogstruktur. | |||
'''--app-debug-info-dir''', '''--appd''' ''<sökväg>'' | |||
Anger katalogen där felsökningsinformation för programmet finns. Användbart om debug-info ligger i separata filer. | |||
'''--lib-debug-info-dir1''', '''--libd1''' ''<sökväg>'' | |||
Anger katalogen där debug-info för första biblioteksversionen finns. | |||
'''--lib-debug-info-dir2''', '''--libd2''' ''<sökväg>'' | |||
Anger katalogen där debug-info för andra biblioteksversionen finns. | |||
'''--suppressions''', '''--suppr''' ''<fil>'' | |||
Använder en undertryckningsspecifikation från angiven fil. Kan anges flera gånger. | |||
'''--no-show-locs''' | |||
Visa inte var i det andra biblioteket förändringar skett. | |||
=== | '''--btf''' | ||
Extrahera ABI-information från BTF-debugdata om tillgänglig. | |||
'''--ctf''' | |||
Extrahera ABI-information från CTF-debugdata om tillgänglig. | |||
'''--fail-no-debug-info''' | |||
Gör att programmet misslyckas om ingen debug-information hittas. Utan denna flagga jämförs istället endast ELF-egenskaper. | |||
'''--ignore-soname''' | |||
Ignorera skillnader i SONAME vid jämförelse. | |||
'''--weak-mode''' | |||
Aktiverar svagt läge. I detta läge behövs endast en biblioteksversion: | |||
<pre> | |||
abicompat --weak-mode <program> <bibliotek> | |||
</pre> | |||
Om endast ett bibliotek anges aktiveras svagt läge automatiskt: | |||
<pre> | |||
abicompat <program> <bibliotek> | |||
</pre> | |||
I detta läge jämförs typerna av funktioner och variabler som exporteras av biblioteket och används av programmet. Om typerna skiljer sig rapporteras skillnaderna. | |||
Observera att detta läge inte upptäcker symboler som tagits bort från biblioteket, vilket är anledningen till att det kallas "svagt" läge. | |||
== RETURVÄRDEN == | |||
Returkoden är: | |||
* '''0''' om ABI är identisk | |||
* '''icke-noll''' om den skiljer sig eller om fel uppstått | |||
Returkoden är ett 8-bitars bitfält: | |||
'''1 (ABIDIFF_ERROR)''' | |||
Ett fel har inträffat. | |||
'''2 (ABIDIFF_USAGE_ERROR)''' | |||
Felaktig användning av kommandot. Denna bit innebär alltid att bit 1 också är satt. | |||
'''4 (ABIDIFF_ABI_CHANGE)''' | |||
ABI skiljer sig mellan jämförda binärer. | |||
'''8 (ABIDIFF_ABI_INCOMPATIBLE_CHANGE)''' | |||
ABI skiljer sig på ett inkompatibelt sätt. Denna bit innebär alltid att bit 4 också är satt. | |||
Om bit 4 är satt men inte bit 8 krävs manuell granskning för att avgöra kompatibilitet. | |||
Övriga bitar används inte för närvarande. | |||
== ANVÄNDNINGSEXEMPEL == | |||
=== Upptäcka ABI-inkompatibilitet === | |||
<pre> | |||
$ cat -n test0.h | |||
1 struct foo | |||
2 { | |||
3 int m0; | |||
4 | |||
5 foo() | |||
6 : m0() | |||
7 {} | |||
8 }; | |||
</pre> | |||
<pre> | |||
$ cat -n test-app.cc | |||
1 // Kompilera med: | |||
2 // g++ -g -Wall -o test-app -L. -ltest-0 test-app.cc | |||
</pre> | |||
<pre> | |||
$ cat -n test1.h | |||
1 struct foo | |||
2 { | |||
3 int m0; | |||
4 char m1; /* ny medlem tillagd */ | |||
</pre> | |||
=== Kompilering === | |||
<pre> | |||
g++ -g -Wall -shared -o libtest-0.so test0.cc | |||
g++ -g -Wall -shared -o libtest-1.so test1.cc | |||
</pre> | |||
<pre> | |||
g++ -g -Wall -o test-app -L. -ltest-0.so test-app.cc | |||
</pre> | |||
=== Jämförelse === | |||
<pre> | |||
abicompat test-app libtest-0.so libtest-1.so | |||
</pre> | |||
Exempel på resultat: | |||
<pre> | |||
Functions changes summary: 0 Removed, 2 Changed, 0 Added | |||
Variables changes summary: 0 Removed, 0 Changed, 0 Added | |||
</pre> | |||
=== Svagt läge === | |||
<pre> | |||
abicompat --weak-mode test-app libtest-1.so | |||
</pre> | |||
== FÖRFATTARE == | |||
Dodji Seketeli | |||
== COPYRIGHT == | |||
2014–2025, Red Hat, Inc. | |||
== KOLOFON == | |||
Denna manualsida är en del av projektet libabigail (ABI Generic Analysis and Instrumentation Library). | |||
Projektets webbplats: | |||
[https://sourceware.org/libabigail/](https://sourceware.org/libabigail/) | |||
Felrapportering: | |||
[http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail](http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail) | |||
Manualsidan hämtades från projektets Git-repository den 16 januari 2026. | |||
== SE ÄVEN == | |||
[[abidiff(1)]], [[abipkgdiff(1)]], [[abidw(1)]], [[abilint(1)]], [[readelf(1)]], [[nm(1)]], [[ldd(1)]] | |||
Detta avsnitt länkar till relaterade verktyg för analys av ABI, ELF-binärer och symboler. | |||
=== Källor === | === Källor === | ||
Nuvarande version från 28 mars 2026 kl. 11.22
abicompat(1)
NAMN
abicompat – kontrollera ABI-kompatibilitet
abicompat kontrollerar att ett program som länkar mot ett givet delat bibliotek fortfarande är ABI-kompatibelt med en senare version av detta bibliotek. Om den nya versionen av biblioteket introducerar en ABI-inkompatibilitet, ger abicompat ledtrådar om exakt vad inkompatibiliteten består i.
ANROP
abicompat [flaggor] [<program> <delat-bibliotek-första-version> <delat-bibliotek-andra-version>]
FLAGGOR
--help Visar kort hjälptext om kommandot och avslutar.
--version, -v Visar programmets versionsinformation och avslutar.
--list-undefined-symbols, -u Visar en lista över odefinierade symboler i programmet och avslutar.
--show-base-names, -b I rapporten som genereras gör denna flagga att program och bibliotek refereras med endast sina basnamn istället för fullständiga sökvägar. Detta är användbart i skript där man vill jämföra namn oberoende av katalogstruktur.
--app-debug-info-dir, --appd <sökväg> Anger katalogen där felsökningsinformation för programmet finns. Användbart om debug-info ligger i separata filer.
--lib-debug-info-dir1, --libd1 <sökväg> Anger katalogen där debug-info för första biblioteksversionen finns.
--lib-debug-info-dir2, --libd2 <sökväg> Anger katalogen där debug-info för andra biblioteksversionen finns.
--suppressions, --suppr <fil> Använder en undertryckningsspecifikation från angiven fil. Kan anges flera gånger.
--no-show-locs Visa inte var i det andra biblioteket förändringar skett.
--btf Extrahera ABI-information från BTF-debugdata om tillgänglig.
--ctf Extrahera ABI-information från CTF-debugdata om tillgänglig.
--fail-no-debug-info Gör att programmet misslyckas om ingen debug-information hittas. Utan denna flagga jämförs istället endast ELF-egenskaper.
--ignore-soname Ignorera skillnader i SONAME vid jämförelse.
--weak-mode Aktiverar svagt läge. I detta läge behövs endast en biblioteksversion:
abicompat --weak-mode <program> <bibliotek>
Om endast ett bibliotek anges aktiveras svagt läge automatiskt:
abicompat <program> <bibliotek>
I detta läge jämförs typerna av funktioner och variabler som exporteras av biblioteket och används av programmet. Om typerna skiljer sig rapporteras skillnaderna.
Observera att detta läge inte upptäcker symboler som tagits bort från biblioteket, vilket är anledningen till att det kallas "svagt" läge.
RETURVÄRDEN
Returkoden är:
- 0 om ABI är identisk
- icke-noll om den skiljer sig eller om fel uppstått
Returkoden är ett 8-bitars bitfält:
1 (ABIDIFF_ERROR) Ett fel har inträffat.
2 (ABIDIFF_USAGE_ERROR) Felaktig användning av kommandot. Denna bit innebär alltid att bit 1 också är satt.
4 (ABIDIFF_ABI_CHANGE) ABI skiljer sig mellan jämförda binärer.
8 (ABIDIFF_ABI_INCOMPATIBLE_CHANGE) ABI skiljer sig på ett inkompatibelt sätt. Denna bit innebär alltid att bit 4 också är satt.
Om bit 4 är satt men inte bit 8 krävs manuell granskning för att avgöra kompatibilitet.
Övriga bitar används inte för närvarande.
ANVÄNDNINGSEXEMPEL
Upptäcka ABI-inkompatibilitet
$ cat -n test0.h
1 struct foo
2 {
3 int m0;
4
5 foo()
6 : m0()
7 {}
8 };
$ cat -n test-app.cc
1 // Kompilera med:
2 // g++ -g -Wall -o test-app -L. -ltest-0 test-app.cc
$ cat -n test1.h
1 struct foo
2 {
3 int m0;
4 char m1; /* ny medlem tillagd */
Kompilering
g++ -g -Wall -shared -o libtest-0.so test0.cc g++ -g -Wall -shared -o libtest-1.so test1.cc
g++ -g -Wall -o test-app -L. -ltest-0.so test-app.cc
Jämförelse
abicompat test-app libtest-0.so libtest-1.so
Exempel på resultat:
Functions changes summary: 0 Removed, 2 Changed, 0 Added Variables changes summary: 0 Removed, 0 Changed, 0 Added
Svagt läge
abicompat --weak-mode test-app libtest-1.so
FÖRFATTARE
Dodji Seketeli
COPYRIGHT
2014–2025, Red Hat, Inc.
KOLOFON
Denna manualsida är en del av projektet libabigail (ABI Generic Analysis and Instrumentation Library).
Projektets webbplats: [1](https://sourceware.org/libabigail/)
Felrapportering: [2](http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail)
Manualsidan hämtades från projektets Git-repository den 16 januari 2026.
SE ÄVEN
abidiff(1), abipkgdiff(1), abidw(1), abilint(1), readelf(1), nm(1), ldd(1)
Detta avsnitt länkar till relaterade verktyg för analys av ABI, ELF-binärer och symboler.
Källor
Sidslut
Orginalhemsidan på Engelska : https://man7.org/linux/man-pages/man1/abicompat.1.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.