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


Rispondere a