2015-05-21 14 views
7

Ich habe eine lokale gemeinsame Bibliothek, die nicht in $ LD_LIBRARY_PATH ist. Ich möchte meine ausführbare Datei ausführen, aber da die gemeinsam genutzte Bibliothek in den Systemordnern nicht gefunden werden kann, wird "Fehler beim Laden gemeinsamer Bibliotheken" ausgegeben.Wie kann LD_LIBRARY_PATH in CMake geändert werden?

Eine mögliche Lösung dafür ist das Exportieren eines neuen LD_LIBRARY_PATH, der den lokalen Bibliotheksordner enthält.

Wie kann ich diese Umgebungsvariable automatisch in CMake exportieren?

Antwort

2

Wenn Ihre gemeinsame lib im gleichen CMake Projekt Ihrer ausführbaren baut nicht, können Sie die CMake rpath wie verwenden Umgang dies:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

Wenn Sie laufen make install, CMake wird automatisch die Laufzeitpfad der ausführbaren Datei auf Ihrer gemeinsam genutzten Bibliothek.

Wenn Ihre gemeinsam genutzte Bibliothek im selben CMake Projekt erstellt wird, verwenden Sie diese:

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

In diesem Fall, dass Sie sich das Verzeichnis hinzufügen müssen, wo Ihre gemeinsame Bibliothek wird auf dem Laufzeitpfad installiert werden.

Für weitere Informationen können Sie CMake rpath handling

6

Sie können die Runtime Shared Library-Suchpfad setzen Sie die -rpath Linker-Option:

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

lesen, das hilft viel! – dontloo

Verwandte Themen