On Fri, 01 Aug 2003 19:30:12 +0200, Nick Name wrote: > On Fri, 01 Aug 2003 16:51:45 +0200 > "Francesco Bochicchio" <[EMAIL PROTECTED]> wrote: > > >> > - è possibile linkare staticamente solo alcune librerie (per esempio >> > tutte tranne le opengl) ? >> > >> Si. >> >> > Ehm, come si fa? L'opzione "-static" di gcc linka tutto come trova... > A questo ti hanno risposto : specifica i .a insieme ai .o.
>> > - è possibile prendere un eseguibile linkato dinamicamente e >> > trasformarlo in uno linkato staticamente? >> > >> Mah, in generale credo di no. Per generare un eseguibile, un linker >> (tipo ld) ha bisogno di informazioni contenute nei 'relocatable object >> files'('.o') che di solito un >> eseguibile non contene piu' (eccetto forse se compilato con le opzioni >> di debugging). Almeno credo. > > Però mi pare strano perchè in fondo uno l'eseguibile linkato lo si > ricostruisce in memoria con ld.so a partire dall'eseguibile non linkato e > dai .so, quindi perchè non si dovrebbe riuscire a ricostruirlo su disco? > Boh??? Non ne so abbasanza per darti una risposta certa. La mia impressione gia' te l'ho detta : credo che il passaggio da .o a eseguibile comporti una perdita di informazioni, per cui la cosa non e' reversibile. >> i .a sono librerie statiche >> [...] >> i .so sono librerie dinamiche > > Quello che mi chiedo è: ma non bastano i .so? Perchè ci vogliono anche i > .a, in fondo il codice che contengono è lo stesso o sbaglio? (o > viceversa, non bastano solo i .a ?) > Il codice e' lo stesso, le 'informazioni ausiliarie' e l'organizzazione della libreria no. Se non sbaglio, Debian installa solo le librerie dinamiche con i pacchetti 'libXXX' (librerie & run-time). Le librerie statiche sono di solito contenute solo nei pacchetti di sviluppo (XXX-dev), per permettere agli sviluppatori di linkare staticamente i loro programmi, se cosi' desiderano. Quindi ancora una volta Debian esaudisce i tuoi desideri :-). P.S. : mentre sono certo che da una libreria statica si possa ottenere una libreria dinamica, ho dei dubbi sul contrario : forse anche qui c'e' una perdita di informazione non reversibile (?). Ciao ---- FB