Dan*_*aad 22 cmake shared-libraries dynamic-linking
我有一个本地共享库,它不在$ LD_LIBRARY_PATH中.我想运行我的可执行文件,但由于它无法在系统文件夹中找到共享库,因此在加载共享库时输出"错误".
可能的解决方法是导出包含本地库文件夹的新LD_LIBRARY_PATH.
如何在CMake中自动导出此环境变量?
han*_*ank 10
您可以使用-rpath链接器选项设置运行时共享库搜索路径:
SET(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,/usr/local/lib")
Run Code Online (Sandbox Code Playgroud)
如果共享库不在可执行文件的同一CMake项目中构建,则可以使用CMake rpath处理,如下所示:
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
Run Code Online (Sandbox Code Playgroud)
当您运行时make install,CMake会自动将可执行文件的运行时路径设置为共享库。
如果您的共享库是在同一CMake项目中构建的,请使用以下命令:
set(CMAKE_INSTALL_RPATH "/usr/local/lib")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您必须将自己的共享库安装目录添加到运行时路径。
有关更多信息,您可以阅读CMake rpath处理
| 归档时间: |
|
| 查看次数: |
18560 次 |
| 最近记录: |