Mi a különbség a .a és a .so fájl között?

Ha jól tudom, könyvtárak, de mi a különbség a kettő között?

Megjegyzések

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, hogy full 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük