[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: