Jaký je rozdíl mezi souborem .a a .so?

Pokud vím, jsou to knihovny, ale jaký je mezi nimi rozdíl?

Komentáře

Odpověď

Odpověď

Následně je soubor .a archiv „ar“. Na rozdíl od archivu tar ukládá .o nebo objekt soubory, které umožňují jejich vyjmutí z archivu a propojení mimo jiné do programu. Pokud chcete, můžete použít ar k uložení dalších souborů.

Seznam členů souboru ar můžete získat pomocí parametru -t, například:

ar -t /usr/lib/libc.a 

Soubor .so je soubor „sdíleného objektu“ a má pro linkera k dispozici mnohem více informací, takže členové mohou být co nejrychleji propojeni s programem načítání.

Například zkuste:

objdump -T /lib/libc-2.11.1.so 

(nebo jakákoli verze libc.so, kterou máte v adresáři / lib.) Všimněte si, že soubor .so může také obsahovat pouze linkerový skript, který jej nasměruje k nalezení soubor jinde nebo použít něco jiného.

Zajímavé je, že soubor .so může být také plnohodnotným programem. Zkuste například spustit /lib/libc.so.6 . (Je smutné, že tato poslední část nefunguje na modernějších systémech. Ne že by to byla velká ztráta.)

Komentáře

  • překlep . chcete napsat ar -t /usr/lib/libc.a. Ve skutečnosti se - v tomto případě nezdá být nutné '. Také /lib/libc.so.6. pouze vytiskne nějaký výstup. Nevím ' nevím, jestli bych to nazval full fledged program.
  • It ' je plnohodnotný program v tom smyslu, že má hlavní symbol, který má exec najít.
  • Můžete také spustit ldd na .so ' s a ukáže vám, jaké další knihovny používá. Static se vrátí se zprávou, že ' nejde o dynamickou knihovnu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *