Ho un progetto in cui ho una libreria statica libhelper.a
e un'altra con la mia libreria di oggetti condivisi, libtestlib.so
. Il mio obiettivo è collegare libhelper.a
a libtestlib.so
. È possibile su Linux/BSD? Quando ho provato e ha creato un programma di test ho ottenuto i seguenti errori:Miscelazione di librerie statiche e librerie condivise
./prog1:/usr/local/lib/libtestlib.so.1.0: undefined simbolo ''
La mia ipotesi è che ciò si verifica perché libhelper.a non è stato compilato con -fPIC
mentre lo era libtestlib.so
. Qual è il modo corretto di creare programmi che utilizzano librerie condivise che hanno anche dipendenze su librerie statiche?
Grazie!
"link libhelper.a in libtestlib.so" Cosa? –
Cosa hai provato finora? In ogni caso, non conosco alcun modo per collegare codice non PIC in una libreria condivisa. Solitamente le librerie statiche sono collegate solo ai file eseguibili, motivo per cui sono raramente compilate con PIC. Non puoi collegare entrambe le librerie nell'eseguibile, o compilare entrambe con PIC sin dall'inizio? – Philipp