700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Linux下编译程序/usr/bin/ld: cannot find -l*错误的解决方法

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

时间:2024-06-05 16:28:43

相关推荐

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,回车运行,让刚刚的配置信息立即生效,配置完成。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。