随笔 - 100  文章 - 0  评论 - 6  阅读 - 88261

CMakeLists --- 设置rpath_link方法 编译报错try using -rpath or -rpath-link)

指令:add_link_options("LINKER:-rpath-link,${THIRD_LIBS_DIR}")

THIRD_LIBS_DIR:需要链接的库的目录

作用:编译生成一个可执行文件时,依赖一个动态库A,动态库A同时又依赖动态库B.如果我们没有显示集成动态库B时,链接器会去-rpath-link设置的目录中寻找依赖项。

 

例子:

1.库A,依赖库B

cmake_minimum_required(VERSION 3.9)

project(alib)

add_library(A SHARED a.cpp)
target_link_libraries(A B)

2.程序test,依赖库A

复制代码
cmake_minimum_required(VERSION 3.9)

project(test)
  #add_link_options("LINKER:-rpath-link,${B_PATH}")
add_executable(test test.cpp)
target_link_libraries(test A)
复制代码

如上,编译时会提示找不到库B。类似于这种:

 

可以通过加上add_link_options("LINKER:-rpath-link,${B_PATH}"),指定B的位置。也可以直接把库B放到库A的同级目录下。

 

posted on   林西索  阅读(1270)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示