Ho un progetto nel mio IDE. Ho bisogno di creare una libreria condivisa da usare nelle estensioni. Non voglio fare una copia di questo progetto con le impostazioni della libreria condivisa. C'è un modo per costruire una libreria condivisa usando i file oggetto (.o) dal mio progetto già esistente? Come ho capito, posso scrivere un makefile per questo.Creazione di una libreria condivisa da file di oggetti esistenti
8
A
risposta
13
presumo che sei su una sorta di Unix e probabilmente utilizza la toolchain GNU. In tal caso, per creare una corretta libreria condivisa, è necessario compilare il codice usando i flag di codice indipendenti dalla posizione (-fpic o -fPIC) prima di poter creare una libreria condivisa. A meno che i tuoi file .o non siano già compilati con tali flag, è probabile che non ti ritroverai con una lib di lavoro condivisa.
Se sono già compilati per codice indipendente dalla posizione, il solito g++ -shared ...
dovrebbe fare il trucco.
7
g++ -shared -fPIC -o myshared.so *.o
+1 Ho dimenticato di dire che anche i file oggetto hanno bisogno di fpic. – pajton
@pajton - Indovina chi è stato catturato da questo prima :). –