Re: Linkare staticamente un eseguibile
On Fri, 01 Aug 2003 19:30:12 +0200, Nick Name wrote:
> On Fri, 01 Aug 2003 16:51:45 +0200
> "Francesco Bochicchio" <bockman@virgilio.it> 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
Reply to: