Re: Linkare staticamente un eseguibile
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...
> > - è 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?
> 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 ?)
> Sia i .a che i .so sono colezioni di .o con informazioni aggiuntive.
> E' quindi possibile convertire un tipo nell'altro. Non conosco modi
> per farlo in un colpo solo, ma si possono ad esempio estrarre i .o
> da un .a con 'ar' e poi usare 'ld' per generare il '.so'.
Devo provare!
Grazie per la risposta
Vincenzo
Reply to: