Domanda

Così, dopo mi sono imbattuto libtool e scesi un file libfoo.lo e foo.o dalla mia sorgente della libreria, come faccio a convertire il file libfoo.lo in una normale libreria condivisa di Linux, come libfoo.so.1.0.0 in modo da poter installare e link ad esso sul mio sistema di destinazione?

È stato utile?

Soluzione

Dalle uscite di cui la questione, sembra che è stato eseguito con libtool --mode = modalità di compilazione. Sarà necessario eseguire di nuovo con libtool --mode = link per produrre .a e .so librerie.

libtool è un semplice involucro per gcc, ln ar e ranlib che è necessario per produrre librerie. Tutto ciò che fa è correre gcc aggiungere le opzioni necessarie per garantire che le librerie statiche e condivise vengono creati in modo corretto.

Quando si compila libtool inserisce il tag -fPIC al fine di garantire la necessaria generazione di posizione del codice indipendente necessaria per le librerie condivise. I file .o sono normali file oggetto che possono essere archiviati in un file .a statica. I file .lo sono file oggetto con posizione di codice indipendente che ora possono essere collegati in un file .so.

Quando si collega libtool verrà eseguito ar per creare una libreria statica o ln per collegare gli oggetti file in una libreria .so condivisa.

libtool può anche installare la libreria quando desiderato utilizzando il --mode = installazione.

http://www.gnu.org/software/libtool/manual /libtool.html per maggiori informazioni.

Si prega di ricordare che quando si costruisce un eseguibile ci sono sempre due fasi, compilazione e collegamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top