GLR*_*GLR 3 ubuntu cmake gnu-make
我是比较新的CMake,我已经开发了一个小的项目,建立一个库,链接到一个共享库,命名external_library。我的CMakeLists.txt文件看起来像这样:
cmake_minimum_required(VERSION 2.8.12)
project(project_name)
include_directories(path_to_external_library_source_code)
add_subdirectory(path_to_external_library_header_files subproject/external_library)
target_link_libraries(project_name external_library)
install(TARGETS project_name DESTINATION installation_path)
Run Code Online (Sandbox Code Playgroud)
当我构建项目(使用make)时,它运行良好,并正确创建了链接(我已使用ldd命令检查过它)。但是,当我尝试安装它(使用make install)时,安装路径中生成的文件未链接到指定的共享库。
ldd再次使用,我查了一下安装路径中生成的库中没有找到共享库,虽然在构建路径中生成的库中找到了。我怎么能解决这个问题?
谢谢。
Pd:我CMake 3.5.1在Ubuntu 16.04.2 LTS.
在某些路径中查找共享库,在/etc/ld.so.conf.
如果您的共享库位于这些路径之一中,则应该可以找到它。如果它不在这些路径之一中,您有四个选择:
LD_LIBRARY_PATH(不推荐,因为它会覆盖系统搜索路径,它基本上是一个调试功能),或发生的情况是 CMake 会自动设置二进制文件的 RPATH,以从您的项目构建中引用共享库${CMAKE_BINARY_DIR}。(您想针对您刚刚构建的库测试二进制文件,而不是您昨天安装的库。)
默认情况下,该RPATH设置清除由make install(所以库${CMAKE_BINARY_DIR}不再被引用,而是搜索系统中的搜索路径)。
假设您要安装到不在系统搜索路径中的目的地,您的二进制文件现在不再“看到”其共享库。请咨询 CMake RPATH 处理 ,让 CMake 将二进制文件的 RPATH 设置为共享库的安装路径。
| 归档时间: |
|
| 查看次数: |
2614 次 |
| 最近记录: |