关于usr/bin/ld: cannot find -lxxx问题相关的版本号问题

软件和网站开发以及相关技术探讨
回复
头像
metorm
帖子: 134
注册时间: 2011-04-23 15:30
送出感谢: 2 次
接收感谢: 0

关于usr/bin/ld: cannot find -lxxx问题相关的版本号问题

#1

帖子 metorm » 2014-08-09 23:09

嗯,晚上自己编译过了一个貌似挺乱的东西,把发现的菜鸟技巧显摆一下~ :em04

编译某个程序,一直过不去,报错 ld : cann’t find -lXi

意思是找不到某个库文件,在这里是libXi.so,-l是命令行选项

于是找到了这篇文章http://eminzhang.blog.51cto.com/5292425/1285705,但是,文中少说了一个像我这样的菜鸟可能不知道的问题:

ld链接时,是不识别 libXi.so.6 或者 libXi.so.6.10 这种文件名的! *.so文件不能有版本号

有版本号的文件只在运行时才被识别。

怎么办的,可以手动链过去,但是不够优雅。

其实呢,原生的办法是有的,装dev包。

比如这里报错 -lXi,那么他是在寻找 libXi.so 文件

然后用 apt-file 寻找需要安装什么

> apt-file search libXi.so

libxi-dev: /usr/lib/x86_64-linux-gnu/libXi.so

libxi6: /usr/lib/x86_64-linux-gnu/libXi.so.6

libxi6: /usr/lib/x86_64-linux-gnu/libXi.so.6.1.0

libxi6-dbg: /usr/lib/debug/usr/lib/x86_64-linux-gnu/libXi.so.6.1.0

这不就起了,装一下libXi-dev,不但链接库好了,其他需要的文件也搞好了,还有升级什么的。自己建老觉得没有安全感……

-------------------------
文章也发在我的博客,内有更详细的解释:
http://www.metorm.tk/?p=268
恒河沙数1
帖子: 295
注册时间: 2013-04-27 19:26
系统: ubuntu+win7
送出感谢: 21 次
接收感谢: 9 次

Re: 关于usr/bin/ld: cannot find -lxxx问题相关的版本号问题

#2

帖子 恒河沙数1 » 2014-08-10 0:19

楼主,请问apt-file和apt-cache search 的区别是什么?
头像
metorm
帖子: 134
注册时间: 2011-04-23 15:30
送出感谢: 2 次
接收感谢: 0

Re: 关于usr/bin/ld: cannot find -lxxx问题相关的版本号问题

#3

帖子 metorm » 2014-08-10 8:38

恒河沙数1 写了:楼主,请问apt-file和apt-cache search 的区别是什么?
apt-cache 我用的不多,好像是用来搜包名和命令的?
apt-file 系统不带,需要安装。可以搜到文件名,以及它们安装之后所在的位置,比如本帖的问题,你可以搜 apt-file search /usr/lib/x86_64_linux_gnu/libXi.so

记得装完apt-file 要 apt-file update
回复

回到 “软件/网站开发”