2015-05-21 13 views
7

Mam lokalną bibliotekę współużytkowaną, która nie znajduje się w $ LD_LIBRARY_PATH. Chcę uruchomić mój plik wykonywalny, ale ponieważ nie może znaleźć biblioteki współdzielonej w folderach systemowych, wyświetla "błąd podczas ładowania bibliotek współdzielonych".Jak można zmienić LD_LIBRARY_PATH w CMake?

Ewentualną poprawką jest wyeksportowanie nowej LD_LIBRARY_PATH zawierającej folder lokalnej biblioteki.

Jak mogę automatycznie wyeksportować tę zmienną środowiskową w programie CMake?

Odpowiedz

2

Jeśli dzielone lib nie budować w tym samym projekcie CMake swojego pliku wykonywalnego, można użyć rpath CUpewnij obsługi jak to:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

Kiedy trafisz make install, CUpewnij automatycznie ustawić ścieżkę wykonania swojego pliku wykonywalnego do biblioteki współdzielonej.

Jeśli wspólna biblioteka jest zbudowany w tym samym projekcie CMake, użyj tego:

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

W tym przypadku należy dodać sobie katalog, gdzie wspólna biblioteka zostanie zainstalowany na ścieżce wykonawczego.

Aby uzyskać więcej informacji, można przeczytać CMake rpath handling

6

Można ustawić wykonawczego wspólny przeszukiwania biblioteki ścieżkę za pomocą opcji -rpath łącznikową:

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

że bardzo pomaga! – dontloo

Powiązane problemy