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...
> > - � 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