最近尝试在MacOS上跑代码, 为此安装了GMP库, 但是发现cmake
后再运行make
会出现如下错误:
ld: library not found for -lgmp
这个错误在MacOS上常见为以下形式:
ld: library not found for -lxxx
因为MacOS系统自身的机制, 只能通过brew
来安装这些第三方库, 通常可以通过
brew link --overwrite xxx
创建软链接的方式来解决, 但是有时候安装完系统还是找不到, 推测是因为该第三方库不包含Findxxx.cmake
文件, 此外MacOS默认不会在/usr/local/opt
目录下查找第三方库文件, 因而产生了这个错误. 于是开始了解决错误之旅. 找了很多资料, 一般是要求我们在.bashrc
或者.zshrc
(取决于喜欢的shell类型)中添加路径, 第三方库的头文件和库的路径一般在/usr/local/opt/xxx/include
和/usr/local/opt/xxx/lib
下, 完整代码如下:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/opt/xxx/lib"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/opt/xxx/lib"
然后source ~/.zshrc
, 再次编译运行, 问题解决.
那么有不修改.zshrc
文件的办法吗? 经摸索发现, 只需要在CMakeLists.txt
中插入如下代码:
LINK_DIRECTORIES("/usr/local/opt/xxx/lib")
再次编译即可解决, 但是下次其他项目要用的时候都需要在CMakeLists.txt
中配置一次.
本文标题: MacOS下cmake解决找不到链接库的问题
本文作者: 云中雨雾
本文链接: https://weiviming.github.io/16208089129999.html
本站文章采用 知识共享署名4.0 国际许可协议进行许可
除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间: 2021-05-12T16:41:52+08:00