【发布时间】:2019-04-03 03:22:01
【问题描述】:
我有一个用 CMake 构建的动态库 libhelloworld.so,我已经安装在 /usr/local/lib64 中。我在构建可执行文件的 CMakeLists.txt 文件中链接库:
find_package(HelloWorld REQUIRED)
target_link_libraries(helloexecutable HelloWorld::HelloWorld)
CMake 可以很好地构建可执行文件,但是当我运行它时出现以下错误:
error while loading shared libraries: libhelloworld.so: cannot open shared object file: No such file or directory
我可以通过设置 rpath 解决问题
set(CMAKE_INSTALL_RPATH "/usr/local/lib64")
但这不是便携式的。
所以我有两个问题:1)CMake 不应该自动设置链接动态库的 rpath 吗?和 2) 如果 Cmake 可以自动设置 rpath,我该如何告诉它这样做,如果不能,那么设置 rpath 的更便携的方式是什么?
【问题讨论】:
-
这个CMake wiki page应该对你的问题给出一些解释。