Linux编译问题——/usr/bin/ld: cannot find -lxxx问题总结
作者:zhanhailiang 日期:2014-12-08
make时报“/usr/bin/ld: cannot find -lxxx”,是指编译过程找不到对应库文件,其中,-lxxx表示链接库文件libxxx.so。
一般出现这种错误有以下几种原因:
-
系统缺乏对应的库文件;
-
版本不对应;
-
库文件的链接错误;
-
库文件路径设置问题。
前两种情况只需要下载安装lib库即可(一般地,yum install libxxx-dev或apt-get install libxxx-dev直接安装即可)
排除掉前两种情况后,请确认后两种情况:
第三种情况,通过find或者locate指令定位到链接文件,查看链接文件是否正确的指向了我们希望的lib,如果不是,用 ln -sf */libxxx.so.x */libxxx.so 指令修改它。
第四种情况,如果是库文件路径引发的问题,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件,(可以自建conf,以方便识别)将lib所在目录写进去,然后在终端输入 ldconfig 更新缓存。
具体实例,今天编译php遇到如下错误“/usr/bin/ld: cannot find -lltdl”,如下:
/usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit status make: *** [sapi/fpm/php-fpm] Error 1
这是因为缺少ltdl库,执行 yum install libtool-ltdl-devel.x86_64 即可。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。