Sto tentando di ottenere SCons per creare una libreria condivisa. Uno degli elementi che vanno nella .so
è una lib statica .a
.SCons per creare una libreria condivisa (.so) con una libreria statica (.a)
Ho una linea simile:
env_2.SharedLibrary('libstuff.so', \
Split("""stuff.cxx mylib/libMine.a""")
E su eseguirlo, ottengo questo errore:
scons: *** Source file: mylib/libMine.a \
is static and is not compatible with shared target: libstuff.so
Tuttavia, so che una libreria condivisa può essere fatta dal .a
attraverso un Comando come:
g++ -m32 -shared -o libstuff.so stuff.o mylib/libMine.a
Qualsiasi idea su come far funzionare questo o qualsiasi soluzione alternativa sarebbe molto appr eciated.
questione connessa: Come faccio ad avere scons per mettere una stringa aggiuntiva -shared
sulla riga di comando LINK per la chiamata Program()
? Se potessi fare questo, penso che soddisferebbe le mie esigenze.
Penso che tu abbia ragione che il file .a ha file .o NON creati usando -fPIC. Comunque g ++ -m32 -shared ... funziona ancora in qualche modo. – xavjuan
Sono tornato indietro e ho inserito i file in .a con -fPIC, ma questo non mi è sembrato di aiuto. – xavjuan
I LINKFLAGS sono stati utili. grazie. – xavjuan