Tengo un proyecto donde tengo una biblioteca estática libhelper.a
y otra con mi biblioteca de objetos compartidos, libtestlib.so
. Mi objetivo es vincular libhelper.a
en libtestlib.so
. ¿Es eso posible en Linux/BSD? Cuando intenté y ha creado un programa de prueba que tengo los siguientes errores:Mezcla de bibliotecas estáticas y bibliotecas compartidas
./prog1:/usr/local/lib/libtestlib.so.1.0: undefined símbolo ''
Mi conjetura es que esto está ocurriendo porque libhelper.a no se compiló con -fPIC
mientras que libtestlib.so
fue. ¿Cuál es la forma correcta de crear programas que usan bibliotecas compartidas que también tienen dependencias en bibliotecas estáticas?
Gracias!
"enlace libhelper.a en libtestlib.so" ¿Qué? –
¿Qué has intentado hasta ahora? En cualquier caso, no conozco ninguna forma de vincular código que no sea PIC a una biblioteca compartida. Las bibliotecas estáticas generalmente solo están vinculadas en ejecutables, por eso rara vez se compilan con PIC. ¿No puedes vincular ambas bibliotecas en el ejecutable o compilar ambas con PIC desde el principio? – Philipp