Linux下编译程序/usr/bin/ld: cannot find -l*错误的解决方法

一、前言

  Linux下编译程序的时候,出现/usr/bin/ld: cannot find -lxxx的错误,主要的原因是找不到相应的动态库,库文件没有导入到ld检索目录中。
  常见的链接不到动态库的错误信息如下:

/usr/bin/ld: cannot find -lxcb
/usr/bin/ld: cannot find -lfreetype
/usr/bin/ld: cannot find -lpng
/usr/bin/ld: cannot find -lEGL
/usr/bin/ld: cannot find -lGL

  动态库的名称就是-l后面的名称,如-lpng,就是png动态库。

二、解决方法

1、查看本地是否存在这些库。

命令行输入
locate libfreetype.so

如果本地存在该库,则输出
/usr/lib/x86_64-linux-gnu/libfreetype.so.6
/usr/lib/x86_64-linux-gnu/libfreetype.so.6.11.1

如果本地不存在该库,则必须要安装才能解决,根据情况再进行配置

2、创建软链接。

ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6.11.1 /usr/lib/x86_64-linux-gnu/libfreetype.so

3、重新编译程序,库文件找不到的问题应该可以解决了,其他库找不到的问题同上处理即可。需要注意的是,某些库可能有不一样的情况,如下:

-lpng

命令行输入 locate libpng.so ,可能查找不到对应的库
可以换一种方式查找,如 find / -name libpng*
只要查找到相应的库,创建软链接即可,如
ln -s /usr/lib/x86_64-linux-gnu/libpng12.so /usr/lib/x86_64-linux-gnu/libpng.so
直接新建软链接指向已存在的png库软链接

-lEGL 和 -lGL

命令行输入 locate libEGL.so
输出
/usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1
/usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1.0.0
创建软链接
ln -s /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1.0.0 /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so
把软链接创建在这个目录下可能不生效,编译程序的时候依然出错
此时,在上一级目录中再创建一个软链接,即可生效
ln -s /usr/lib/x86_64-linux-gnu/mesa-egl/libEGL.so.1.0.0 /usr/lib/x86_64-linux-gnu/libEGL.so

-lGL 处理方法与 -lEGL 一致

4、如果库文件已存在或已安装,并且相应的软链接也已存在或已创建,依旧出现错误,则证明库文件没有导入到ld检索目录中,有以下两种处理方法。

(1)第一种方法
  直接将库文件和拷贝放到/usr/lib/x86_64-linux-gnu/目录中,然后重新创建软链接即可。

(2)第二种方法
  进入/etc/ld.so.conf.d/目录,查看库文件的安装存放的路径是否有配置到.conf文件中。如果没有,可以在其中一个.conf文件中添加库文件的路径(不建议,系统配置好的文件最好不要修改);另外可以自己新建一个.conf文件,如:ffmpeg.conf,然后在文件中输入对应的库文件的路径,如:/home/ffmpeg/lib,该路径必须要写到库文件存放的最内层目录,最后保存文件即可。注意,还有一步不能忘,在命令行输入ldconfig,回车运行,让刚刚的配置信息立即生效,配置完成。

  • 28
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶落花枯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值