mac下报错

来源:13-4 使用CMake完成库的编译和链接

little_forest

2021-01-14

老师,在mac下会有错误
dyld: Library not loaded: @rpath/libfibonacci.dylib
不过在cmakelists.txt设置set(CMAKE_MACOSX_RPATH 0)就没有问题了。

写回答

2回答

bennyhuo

2021-01-14

你是直接下载了我的工程是吧?引入 conan 之后会把 rpath 的设置关掉,所以导致找不到。去掉 cmake 当中 conan 相关的配置,重新 load cmake 工程,就不用设置 set(CMAKE_MACOSX_RPATH 0) 了。

我在工程当中实际上加了这个配置 set(CMAKE_INSTALL_RPATH @loader_path/../lib),目的就是要让 install  之后的 可执行文件能够在它所在目录的父目录下 lib 目录中找到这个动态链接库。

加了 conan 之后,因为 conan 会配置 skip rpath 这个配置,因此导致上述配置失效,可以加一行:

set(CMAKE_SKIP_RPATH OFF)

来启用 rpath。rpath 实际上还是比较有用的,如果不启用的话,会使用绝对路径来查找动态链接库,不够灵活。

0
1
little_forest
哦哦,原来是这个原因,谢谢老师!!
2021-01-14
共1条回复

bennyhuo

2021-01-14

可以参考 conan 的说明:

https://docs.conan.io/en/latest/howtos/manage_shared_libraries/rpaths.html

按照 conan 的说明,也可以在调用 conan 的 cmake 函数时传入参数来解决这个问题:

conan_basic_setup(KEEP_RPATHS)

0
0

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2219 学习 · 853 问题

查看课程