Jak nahrát .so knihovnu a jak vlastně funguje?

n_petr na seznam.cz n_petr na seznam.cz
Pátek Duben 29 12:42:32 CEST 2005


Můžete mi prosím vysvětlit, jak manuálně nahrát .so soubor a jak vlastně 
.so soubory fungují a k čemu jsou? Díval jsem se na google a moc moudrý 
z toho nejsem.
- .so a .a jsou něco jako knihovny nebo moduly či ovladače?

Pochopil jsem následující:
*) Vše se řídí přes /etc/ld.so.conf, kde jsou zřejmě adresáře, ze 
kterých se tahají .so knihovny

1) Pokud je v seznamu adresář /usr/lib64 natáhnou se i rekurzivně .so 
knihovny, které jsou např. v /usr/lib64/sane?

2) Jaký je přesně rozdíl mezi .so (dynamickou) a .a (statickou) 
knihovnou? (uvažujme kernel 2.6.x, pokud na to je 2.4.x jinak)

3) Které knihovny se kdy a proč natahují do systému? Po startu PC nebo 
až je zavolá nějaký program?

4) Co je vůbec zač ta knihovna? Vypadá navenek jako ELF binární soubor 
(spustitelný program).

5) Pokud je .so (.a) knihovna něco jako ovladač (.ko), jde na ní udělat 
nějaký odkaz, aby se dala natáhnout pomocí "modprobe" (případně "insmod")?

6) Když mám .so knihovnu jde nějak překonvertovat na .a knihovnu a taky 
opačně, t.j. z .a na .so?

Objevil jsem příkaz ldconfig, ld, ldd, ld.so, ale moc jsem nepochopil na 
co přesně jsou.
ldconfig -p mi vylistuje, jaké jsou asi natažené v paměti knihovny
ldconfig -v mi natáhnul zřejmě všechny knihovny z ld.so.conf asi do paměti
ldconfig -l /usr/lib64/knihovna.so ... by měl asi nahrát knihovnu, ale s 
jakými parametry?
ldd --print mi vypíše, jaké jsou asi natažené v paměti knihovny

Pochopil jsem správně použití příkazů? Jakými příkazi je ještě možné .so 
a .a knihovny obsluhovat a hlavně je s chtěnými parametry nahrávat do 
paměti (pokud se do paměti vůbec nahrávají nebo kam)?

Děkuji mockrát
Petr Novák
n_petr na seznam.cz

PS: Pokud víte o nějakém pěkném a srozumitelném článku o o .so a .a 
souborech, rád si ho přečtu.



Další informace o konferenci Linux