Sotto gcc (g ++), ho compilato una libreria statica some_static_lib.a
(denominata some_static_lib.a
). Voglio collegare (è quella la frase giusta?) Questo file .a
in un'altra libreria dinamica (chiamiamolo libsomeDyn.so
) che sto costruendo. Anche se il .so
compila, non vedo contenuto di .a
sotto .so
usando nm
comando:come collegare la libreria statica alla libreria dinamica in gcc
/usr/bin/g ++ -fPIC -g -Wall -O2 -pipe -Werror -march = pentium3 -mtune = prescott -MD -D_FILE_OFFSET_BITS = 64 -DLINUX -D_GNU_SOURCE -D_THREAD_SAFE -I ../../../../../../../../ -I ../../ .. /../../../../..//libraries -Wl, -rpath,/usr/lib -o libsomeDyn.so some.o another.o some_static_lib.a -shared -Wl -x - Wl, -soname, libsomeDyn.so
Non vedo le funzioni in some_static_lib.a
in libsomeDyn.so
. Che cosa sto facendo di sbagliato?
Quindi ho qualche strana dipendenza nella libreria statica. Fa riferimento a una funzione inclusa nella libreria dinamica. Come posso dire a gcc di trovare il riferimento non definito all'interno della libreria dinamica? Grazie – bob
@bob - non ci dovrebbero essere problemi con la libreria statica riferimento a un simbolo all'interno della libreria dinamica (una volta che si collega una libreria statica, è solo lo stesso come se si fa riferimento direttamente al .o sulla riga di comando). Sospetto che ci sia qualche altro problema e consiglio di pubblicare una nuova domanda. –
Per me è stata la soluzione, ma su OSX ho dovuto usare '-all_load' come equivalente a' --whole-archive' come qualcuno mi ha suggerito su IRC. Spero che possa aiutare qualcun altro! – vmonteco