[FoLUG]domanda sulle librerie C

Ivan folug@lists.linux.it
Mon, 17 Feb 2003 12:39:45 +0100


On Mon, 17 Feb 2003 10:57:28 +0100
Stefano Giunchi <stefano.giunchi@libero.it> wrote:

> (Scusa se continuo a fare un confronto con il mondo MS, d'altronde 
> ognuno proviene dalle proprie esperienze)
> Ma se il collegamento (entry point) alla libreria esterna è dinamico 
> (così avviene con le DLL di Windows, e così penso sia anche con le 
> librerie Linux), il passaggio a nuove versioni di libreria non
> dovrebbe comportare un malfunzionamento dei programmi che vi si
> linkano.Non è che chi sviluppa librerie (glibc inclusa), in genere, è
> poco accorto  nel mantenere  la compatibilità all'indietro, causando i
> Segfault nei programmi che linkavano a versioni + vecchie?

e' vero solo fino ad un certo punto. in realta' ci sono molte cose che
possono cambiare. non entro nel merito perche' non ne so abbastanza, ma
nei cambi di versione importanti in genere si fanno dei "major
rewriting" e la compatibilita' all' indietro e' sacrificata sull' altare
della maggior efficienza ( decisione secondo me assolutamente giusta. la
compatibilita' all' indietro a tutti i costi causa accrocchi di codice
spaventosi. win rulez ). anche al fine di non causare errori subdoli,
la versione della libreria necessaria viene inclusa nell' eseguibile. 
mi e' capitato spesso col mac di dover ricompilare per upgrade di lib,
e del gcc. il gcc 3.2 linkava male le glibc al kernel e questo non si 
caricava. 

> 
> D'altronde, quando MS rilascia nuove versioni delle librerie, è 
> veramente un caso _molto_ difficile che i programmi che linkavano a 
> versioni vecchie non funzionino più (cmq, loro hanno dei team di
> testing della Madonna per ogni cosa che fanno... )

vedi commento precedente sulla backward compatibility

> Si, ma (parlo sempre per lontani ricordi, quando avevo provato a 
> studiare il C) nella fase di link statico non dovrebbero essere prese 
> dalla libreria solo le parti "utilizzate"? Ero convinto fosse così, in

si e' cosi'. dimmi pero' quale prog non si linka almeno 1/4 della
libc... giusto ciaomondo :) 

> pratica che solo le funzioni richiamate e quelle da loro richiamate 
> (...e le altre da quelle richiamate... ad albero) venissero compilate 
> nell'eseguibile... evidentemente sbagliavo...

no

> La libc attuale è 1.2M, ma è divisa in <stdio>, e negli altri "moduli"
> separati, non verrebbe inclusa TUTTA nell'eseguibile!

no gli headers che indichi nel prog in c non rispecchiano divisioni
fisiche delle librerie. stdio, strings, time, ecc sono tutte funzioni il
cui codice e' in libc. restano fuori le funz matematiche e grafiche.

salud


-- 
   (@_  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