小编Ric*_*ins的帖子

CMake 使用相对路径导入共享库链接,破坏安装

我有一个供应商库,需要包含在我的项目的安装程序中,我正在使用INSTALL(FILES ...). 该库与源代码一起存储,问题是链接路径(由 readelf 显示)是相对的,并且该前缀在安装过程中不会被删除,因此动态链接器不是搜索hhlib.so它的../hhlib-linux-64bit/hhlib.so.

\n

如何获得可用的已安装二进制文件?我可以获取安装步骤或 CPack 来删除该库的相对路径吗?

\n

我已将问题简化为一个简单的示例:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib-linux-64bit\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib.h\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hhlib.so\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 use_hydroharp.c\n
Run Code Online (Sandbox Code Playgroud)\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib-linux-64bit\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 hhlib.h\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 hhlib.so\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 use_hydroharp.c\n
Run Code Online (Sandbox Code Playgroud)\n

内置:

\n
cmake_minimum_required (VERSION 3.19)\n\n# These sets have no effect on the issue\n\n# use, i.e. don\'t skip the full RPATH for the build tree\n#SET(CMAKE_SKIP_BUILD_RPATH  FALSE)\n# when building, don\'t use the install RPATH already\n# (but later on when installing)\n#SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) \n# the RPATH …
Run Code Online (Sandbox Code Playgroud)

linker cmake shared-libraries

5
推荐指数
1
解决办法
1341
查看次数

标签 统计

cmake ×1

linker ×1

shared-libraries ×1