posso collegarmi con successo contro libawesomium-1.6.5.so
:Collegamento contro libreria condivisa, chiamando programma senza LD_LIBRARY_PATH personalizzato
-L-L.
-L-lawesomium-1.6.5
-L-ldl
libawesomium-1.6.5.so
è nella stessa directory come il mio eseguibile, ora se provo a chiamare il mio programma (che chiamerò esso prog per ora), ma esiste con:
./prog: error while loading shared libraries: libawesomium-1.6.5.so.0: cannot open shared object file: No such file or directory
Così ho un link simbolico che punta al libawesomium-1.6.5.so.0
libawesomium-1.6.5.so
, in esecuzione prog
di nuovo mi dà lo stesso errore, definendolo con un costume LD_LIBRARY_PATH=./
funziona, ma voglio distribuire prog
e voglio che l'utente sia in grado di usare prog
senza i diritti di root (installazione di awesomium su /usr/lib
ecc.) E senza bisogno di impostare lo LD_LIBRARY_PATH
. Un'opzione sarebbe uno script di shell che imposta lo LD_LIBRARY_PATH
, ma preferirei un modo diverso (ho anche sentito che impostare LD_LIBRARY_PATH
è una cattiva idea).
Inoltre, sarebbe fantastico se non fosse necessario creare il collegamento simbolico a libawesomium-1.6.5.so.0
.
EDIT:
Passando -rpath=.
alle opere linker! Ma awesomium purtroppo non può trattare con esso:
/.../awesomium_test/AwesomiumProcess: error while loading shared libraries: libawesomium-1.6.5.so.0: cannot open shared object file: No such file or directory
Utilizzando -rpath e impostazione LD_LIBRARY_PATH dall'interno prog lavora
Wow funziona, grazie! Beh, non completamente, vedi la mia modifica. – dav1d
L'ho capito! Posso impostare 'LD_LIBRARY_PATH' prima di caricare awesomium all'interno del mio programma. – dav1d
Dovresti passare '-Wl, -rpath = '$ ORIGIN'' invece di' -Wl, -rpath = .' e LI_LIBRARY_PATH sarà inutile. – Julien