[FoLUG]domanda sulle librerie C
Ivan
folug@lists.linux.it
Sun, 16 Feb 2003 22:34:23 +0100
On Sun, 16 Feb 2003 10:50:32 +0100
Stefano Giunchi <stefano.giunchi@libero.it> wrote:
ciao stefano! ho visto dai post precedenti che stai bene :) !
> Un problema di Linux è che ogni volta che c'è un passaggio di versione
> delle librerie standard glibc, certi programmi smettono di funzionare
> se non ricompilati con le nuove versioni.
chiaro. cambiano gli entry point delle funzioni ivi contenute, come
minimo
> Ora mi chiedo: in DOS, e poi Windows, con i compilatori di qualsiasi
> marca (MS, Watcom, Borland) le librerie venivano linkate all'interno
link statico
> dell'eseguibile, soprattutto nei programmi ad interfaccia a caratteri
> o TSR (che volevano essere 'circa' i daemons di Unix).
adesso e' "bad practice".
> Successivamente, è venuta la possibilità di interfacciarsi alle DLL
> (librerie a caricamento dinamico, che da quello che capisco è lo
> stesso metodo che viene utilizzato per le glibc), ma per la libreria
e per tutte le librerie, anche le piu' ignote. avete notato che i prog
tendono sempre piu' a dividersi in prog.deb, libprog.deb, ecc.. ? vale
anche per rpm avviamente
> standard (quella definita nel libro "linguaggio C") la cosa migliore
> era linkarla all'interno dell'eseguibile, vista la sua esigua
> dimensione, rendendolo molto più indipendente dalle varie versioni di
> libreria installate nel sistema.
vero. una volta.... calcola ora la somma delle dimensioni di tutte le
lib e di tutti i programmi sparsi. guarda qui
ivan@runner:~$ ldd /bin/ls
librt.so.1 => /lib/librt.so.1 (0x0ffcf000)
libc.so.6 => /lib/libc.so.6 (0x0fe74000)
libpthread.so.0 => /lib/libpthread.so.0 (0x0fe3e000)
/lib/ld.so.1 => /lib/ld.so.1 (0x30000000)
un prog da cz come ls necessita di 4 lib. se tutte le lib comuni
dovessero essere incorporate nei prog, la dim totale del sistema come
minimo decuplicherebbe ( calcolato a naso alle 22:17 di dom sera :)
> Ora, perché invece in Linux è pratica comune fare link a librerie
> esterne, invece che integrarle nell'eseguibile? E' forse che le
> librerie standard siano diventate così enormi (ma perchè?) da non
> poter essere più una soluzione valida il link statico?
si anche, ma si sono piu' che altro frammentate. una volta compilai wget
statico, divento' circa 2.5M.
ivan@runner:~$ ll /usr/bin/wget
-rwxr-xr-x 1 root root 187616 Dec 11 12:56 /usr/bin/wget
cmq la libc attuale e' di circa 1.2M
riguardati e ricompilati ;-)
--
(@_ Ivan Fabris, S. Sofia (FC) PowerPC & Linux Debian Sarge _*)
//\ www.darthxiong.net setiathome.ssl.berkeley.edu /\\
V_/_ www.folug.linux.it pgp key @ www.keyserver.net _\_V
Socio Fondatore e Consigliere del Forli Linux User Group