Estoy tratando de hacer que SCons haga una biblioteca compartida. Uno de los elementos que entran en .so
es .a
lib estática.SCons para hacer una biblioteca compartida (.so) con una biblioteca estática (.a)
tengo una línea como:
env_2.SharedLibrary('libstuff.so', \
Split("""stuff.cxx mylib/libMine.a""")
Y al ejecutarlo, me sale este error:
scons: *** Source file: mylib/libMine.a \
is static and is not compatible with shared target: libstuff.so
Sin embargo, sé que una biblioteca compartida se puede hacer de la .a
a través de una comando como:
g++ -m32 -shared -o libstuff.so stuff.o mylib/libMine.a
Cualquier idea sobre cómo funciona esto o cualquier solución alternativa sería muy útil eciated.
pregunta relacionada: ¿Cómo llego scons poner una cadena adicional -shared
en la línea de comandos LINK para la llamada Program()
? Si pudiera hacer esto, creo que satisfaría mis necesidades.
Creo que tiene razón en que el .a no tiene archivos .o utilizando -fPIC. Sin embargo, el g ++ -m32 -shared ... todavía funciona de alguna manera. – xavjuan
Volví e hice que los archivos que entran en .a se compilaran con -fPIC, pero eso no pareció ayudar. – xavjuan
LINKFLAGS fue útil. Gracias. – xavjuan