Domanda

Sto lavorando a un progetto realizzato utilizzando autoconf, automake e libtool.Il progetto è distribuito sia in formato binario che sorgente.

Su Linux, per impostazione predefinita lo script di compilazione si collega dinamicamente a tutte le librerie.Ciò ha senso poiché gli utenti Linux possono fare affidamento sul gestore di pacchetti della propria distribuzione per gestire le dipendenze.

Su Windows, per impostazione predefinita lo script di build si collega staticamente a tutte le librerie utilizzando libtool -all-static opzione.Ciò ha senso poiché nessuna delle dipendenze viene fornita con Windows ed è utile essere in grado di distribuire un singolo file binario contenente tutte le dipendenze anziché perdere tempo con la distribuzione di tonnellate di DLL.

Su OSX, alcune dipendenze sono fornite dal sistema operativo, altre no.Pertanto sarebbe utile collegarsi dinamicamente alle librerie fornite dal sistema operativo e staticamente alle altre librerie.Sfortunatamente libtool è tutto o niente -all-static l'opzione non è utile qui.

Esiste un buon modo per ottenere il collegamento di libtool Alcuni librerie staticamente, ma non tutte?

Nota:Mi rendo conto che potrei compilare attentamente le dipendenze in modo che siano disponibili solo build statiche.Tuttavia, preferirei che il sistema di compilazione per il mio progetto fosse robusto nel caso comune di statico E build dinamiche delle dipendenze disponibili.

Nota:Naturalmente, non mi interessano le dipendenze di livello veramente basso come le librerie runtime C/C++, che sono sempre collegate dinamicamente su tutte e tre le piattaforme di cui sopra.

È stato utile?

Soluzione

Dopo alcune ricerche ho risposto alla mia domanda.

Se sono installate build statiche e dinamiche di una libreria e ci si collega a tale libreria utilizzando il file -l parametro, libtool si collega preferibilmente alla build dinamica.Si collega a una build statica se non è disponibile alcuna build dinamica o se si supera il file -static O -all-static opzioni.

libtool può essere forzato a collegarsi alla libreria statica fornendo il percorso completo a quella libreria al posto di -l opzione.

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