cmake - cmake rpath没有加载所有库
问题描述
我正在编写一个使用 cmake 完成构建的程序。在 cmake 文件中,我将 rpath 设置为指向我使用的共享库的目录。我还在 $HOME/.local/vtk-v8.2.0/lib 中安装了一些其他库,例如 vtk
if( ${APPLE} )
set(CMAKE_MACOSX_RPATH ON)
endif()
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${libDir}")
ENDIF("${isSystemDir}" STREQUAL "-1")
rpath 设置正确
$ readelf -d ./myExec.so | rg RUNPATH
$ 0x000000000000001d (RUNPATH) Library runpath: [/home/ashkan/myExec/install/lib:/home/ashkan/.local/vtk-v8.2.0/lib]
但是当我检查我的可执行文件时,它没有找到所有的共享库。
$ ldd ./myExec | egrep 'vtk'
$ libvtkCommonMath-8.2.so.1 => /home/ashkan/.local/vtk-v8.2.0/lib/libvtkCommonMath-8.2.so.1 (0x00007f2bcf28d000)
libvtkCommonCore-8.2.so.1 => /home/ashkan/.local/vtk-v8.2.0/lib/libvtkCommonCore-8.2.so.1 (0x00007f2bcee4c000)
libvtksys-8.2.so.1 => not found
我也检查过,显示“未找到”的共享库实际上与其他共享库位于同一目录中。
任何想法为什么会这样?
解决方案
推荐阅读
- jquery - 当我单击它重定向到同一页面的 url 时,我希望它重定向到链接
- python - 在python中导入一个excel csv文件
- regex - Google Data Studio Regexp 替换公式 - 删除之后的所有字符?和 #
- python - Dask 以编程方式启动远程工作人员
- emacs - Emacs 26.3:生涩的滚动
- arduino - 如何让 Arduino 与 Processing 通信
- html - Dash plotly 图像不在浏览器中呈现,但在 jupyter 笔记本 python 中显示
- spring - 无法实例化 bean 类注解sessionfactorybean
- ruby-on-rails - Docker rails mongodb (Mongo::Error::NoServerAvailable (没有可用的服务器匹配首选项:#
我正在开发一个需要对 Rails 应用程序进行 dockerizing 的项目,该应用程序正在使用 mongodb(mongoid gem)和 sidekiq 和 redis。
我们的目标是创建3个容器,一个用于redis,一个用于sidekiq,第三个
- sql - 从两个表中查询来自 PostgreSQL 的数据