
编译某个程序,一直过不去,报错 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