0%

Linux的 /usr/bin/ld cannot find -lxxx 的解决办法

Linux的 /usr/bin/ld cannot find -lxxx 的解决办法

在软件编译过程中,经常会碰到类似这样的编译错误:

1
$ /usr/bin/ld: cannot find -lxxx

这表示找不到库文件 libxxx.so,其中 xxx 是库文件的名字。

解决方法有:

安装此库文件和相关软件

一般库文件属于某个软件,google搜索该软件并安装,或者使用 yum 安装dev包,或者apt按照devel包即可解决。

将库文件所在路径添加到gcc的搜索路径

使用以下命令查询gcc能否搜寻到指定的库文件:

1
$ gcc -lxxx --verbose

查询库文件 libxxx.so 是否能在搜索路径中找到。

若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:

使用 /etc/ld.so.conf 配置文件

将库文件所在的路径加入到 /etc/ld.so.conf 尾部,并使之生效:

1
2
$ sudo echo '/the/path/of/xxx/lib/' >> /etc/ld.so.conf
$ sudo ldconfig

运行该命令,重新载入 /etc/ld.so.conf 中的路径,使修改生效。

修改环境变量

1
2
3
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/the/path/of/xxx/lib
# 配置之后最好运行一下:
$ ldconfig

修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。

1
2
$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/xxx-1.8.15-patch1/lib/' >> ~/.bashrc
$ source ~/.bashrc

将上述 export 命令加入到配置文件 ~/.bashrc,使之永久生效。

1
$ export LIBRARY_PATH=/opt/biosoft/xxx-1.8.15-patch1/lib/:$LIBRARY_PATH

若修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH 。

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道