码迷,mamicode.com
首页 > 其他好文 > 详细

编译找不到库文件

时间:2014-08-05 18:18:29      阅读:1095      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   os   文件   问题   ar   div   

在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息:
 
/usr/bin/ld: cannot find -lxxx
 
这些讯息会随着编译不同类型的source code 而有不同的结果出来如:
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lXtst
 
其中xxx即表示函式库文件名称,如上例的:libc.so、libltdl.so、libXtst.so。
其命名规则是:lib+库名(即xxx)+.so。
 
会发生这样的原因有以下三种情形:
1 系统没有安装相对应的lib
2 相对应的lib版本不对
3 lib(.so档)的symbolic link 不正确,没有连结到正确的函式库文件(.so)
 
如果在/usr/lib的目录下找不到libXtst.so 档,那么就表示系统没有安装libXtst的函式库。
解法如下:
apt-get install libxtst-dev

 

解决/usr/lib/ld: cannot find -lc
1. 在系统中搜索 libc.so 文件。搜索出一个无效的链接,删除;还有一个
libc.so.6 ,在/usr/lib/i386-linux-gnu下面。
2. 进入usr/lib目录:cd
/usr/lib
3.建立链接:sudo ln -sv /lib/i386-linux-gnu/libc.so.6
libc.so

解决/usr/lib/ld: cannot find -lm
1. 在系统中搜索 libm.so 文件。搜索出一个 libm.so
,在/usr/lib/i386-linux-gnu下面。
2. 进入usr/lib目录:cd /usr/lib
3.建立链接:sudo
ln -sv /usr/lib/i386-linux-gnu/libm.so libm.so

 

 

但是深究该问题应该是该库的头文件库没有安装所致:

[root@localhost lib]# yum list all | grep ltdl libtool-ltdl.i386                       1.5.22-7.el5_4              installed   libtool-ltdl-devel.i386                 1.5.22-7.el5_4              CentOs5.5-32

安装头文件:

[root@localhost lib]# yum -y install libtool-ltdl-devel.i386

。。。

查看后发现该错误确实是由devel头文件未安装所致。

[root@localhost lib]# rpm -ql libtool-ltdl-devel.i386 /usr/include/ltdl.h /usr/lib/libltdl.a /usr/lib/libltdl.la /usr/lib/libltdl.so

编译找不到库文件,布布扣,bubuko.com

编译找不到库文件

标签:style   blog   http   os   文件   问题   ar   div   

原文地址:http://www.cnblogs.com/notlate/p/3892472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!