2015-05-21 19 views
7

Tôi có thư viện được chia sẻ cục bộ không có giá trị $ LD_LIBRARY_PATH. Tôi muốn chạy tệp thực thi của mình, nhưng vì nó không thể tìm thấy thư viện được chia sẻ trong thư mục hệ thống, nó sẽ xuất ra "lỗi khi tải thư viện được chia sẻ".LD_LIBRARY_PATH có thể thay đổi như thế nào trong CMake?

Có thể khắc phục điều này là xuất LD_LIBRARY_PATH mới chứa thư mục thư viện cục bộ.

Làm cách nào để tự động xuất biến môi trường này trong CMake?

Trả lời

2

Nếu lib chia sẻ của bạn không được xây dựng trong dự án CMake cùng thực thi, bạn có thể sử dụng rPath CMake xử lý như này:

set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 

Khi nào bạn sẽ chạy make install, CMake sẽ tự động thiết lập các con đường thời gian chạy của thực thi của bạn vào thư viện chia sẻ của bạn.

Nếu thư viện chia sẻ của bạn được xây dựng trong dự án CMake cùng, sử dụng này:

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

Trong trường hợp này bạn phải thêm bản thân thư mục thư viện chia sẻ của bạn sẽ được cài đặt vào con đường chạy.

Để biết thêm thông tin, bạn có thể đọc CMake rpath handling

6

Bạn có thể thiết lập thời gian chạy chia sẻ đường dẫn tìm kiếm thư viện sử dụng tùy chọn -rpath mối liên kết:

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

giúp ích rất nhiều! – dontloo

Các vấn đề liên quan