2015-05-21 16 views
7

Ho una libreria condivisa locale che non è in $ LD_LIBRARY_PATH. Voglio eseguire il mio eseguibile, ma poiché non riesce a trovare la libreria condivisa nelle cartelle di sistema, emette "errore durante il caricamento delle librerie condivise".Come può essere modificato LD_LIBRARY_PATH all'interno di CMake?

Una possibile soluzione per questo è di esportare un nuovo LD_LIBRARY_PATH contenente la cartella della libreria locale.

Come è possibile esportare automaticamente questa variabile di ambiente in CMake?

risposta

2

Se il lib condivisa non è costruito nello stesso progetto CMake del vostro eseguibile, è possibile utilizzare il rpath CMake movimentazione come questo:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

Quando vi imbatterete make install, CMake imposterà automaticamente il percorso di esecuzione del vostro eseguibile alla libreria condivisa.

Se la libreria condivisa è costruito nello stesso progetto CMake, utilizzare questo:

set(CMAKE_INSTALL_RPATH "/usr/local/lib") 
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

In questo caso è necessario aggiungere te stesso la directory in cui la libreria condivisa verrà installato nel percorso di esecuzione.

Per ulteriori informazioni, potete leggere CMake rpath handling

6

è possibile impostare il tempo di esecuzione condiviso percorso di ricerca della libreria utilizzando l'opzione -rpath linker:

SET(CMAKE_EXE_LINKER_FLAGS 
      "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib") 
+0

che aiuta molto! – dontloo