Ha jól tudom, könyvtárak, de mi a különbség a kettő között?
Megjegyzések
- Kapcsolódó bejegyzés – Mi ' s a különbség .so, .la és .a könyvtár között fájlokat?
Válasz
A .a
a fájl statikus könyvtár, míg a .so
fájl egy megosztott objektumú (dinamikus) könyvtár, amely hasonló a Windows DLL-jéhez. Van néhány részletes információ a kettő közötti különbségekről ezen az oldalon .
Megjegyzések
-
.a
csak egy program részeként vehetők fel fordítás közben..so
' s " importálható " amíg egy program betöltődik. - mit jelent a .a?
- @hfrmobile Az a jelentése archívum – egy statikus könyvtár a
ar
segédprogram segítségével létrehozott objektumfájlok gyűjteménye. További információ itt
Válasz
Következésképpen a .a fájl egy “ar” archívum. A tar-archívummal ellentétben .o vagy objektumot tárol fájlokat, lehetővé téve többek között az archívumból való kivonást és egy programba kapcsolását. Ha akarja, akkor az ar segítségével más fájlokat is tárolhat. / p>
Az ar fájl tagjainak listáját a -t paraméterrel kaphatja meg, például:
ar -t /usr/lib/libc.a
.so fájl egy “megosztott objektum” fájl, és sokkal több információ áll rendelkezésre a linkelő számára, hogy a tagokat a lehető leggyorsabban be lehessen kapcsolni egy betöltő programba.
Például próbálkozzon:
objdump -T /lib/libc-2.11.1.so
(vagy a libc.so bármelyik verziója, amely a / lib könyvtárban található.) Vegye figyelembe, hogy egy .so fájl csak tartalmazhat linkelő szkriptet, amely arra irányítja, hogy megtalálja a fájl máshol, vagy használjon mást.
Érdekes módon a .so fájl teljes értékű program is lehet. Például a /lib/libc.so.6 futtatásával. (Sajnos ez az utolsó rész úgy tűnik, hogy nem működik modernebb rendszereken. Nem mintha nagy veszteség lenne.)
Megjegyzések
- Elírási hiba . azt akarja írni, hogy
ar -t /usr/lib/libc.a
. Valójában az-
nem tűnik szükségesnek ' ebben az esetben. A/lib/libc.so.6.
is csak kinyomtat néhány kimenetet. Nem tudom, hogy ' nem tudom-e, hogyfull fledged program
-nek hívnám. - Ez ' teljes értékű program abban az értelemben, hogy van egy fő szimbóluma az exec megtalálásához.
- A
ldd
fájlt a .so ' s, és megmutatja, milyen más könyvtárakat használ. A Static egy olyan üzenettel tér vissza, hogy ' nem dinamikus könyvtár.