您的位置:首页 > 移动开发 > Objective-C

libstdc++.so.6: cannot open shared object file: No such file or directory的问题

2012-08-28 15:47 489 查看
安装cmake的时候,./bootstrap这一步走不通,说是缺乏c++编译器,打开指定的log日志后,发现根源在于libstdc++.so.6找不到的问题,在网上搜了很多方法,出现问题的原因有以下几种:

1./usr/lib下面没有libstc++.so.6 这个通过安装软件包,然后建立软链接即可。

2./usr/lib 与/usr/local/lib 或/usr/lib64 下有不同版本的libstc++.so.6 ,导致冲突,

参见这篇日志的分析 /article/11023739.html

解决方法在上篇日志中写到了。

以在/usr/lib64版本不一致为例(我遇到的情况),

在/usr/lib 下面的libstdc++.so.6指向 的版本是6.0.3 然而在/usr/lib64中也存在一个libstdc++.so.6指向 的版本是6.0.8 。因此将6.0.3的版本拷贝到/usr/lib64下面(其实我的那个lib64下面有6.0.3于是我就没有再copy),重新建立符号链接。

但是这一步之后 ./bootstrap 没有再报c++编译器的问题,而是报出了以下错误:

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.5' not found

经查是由于libstdc++.so.6.0.*版本过低导致的,看来6.0.3链接不行,于是我就将/usr/lib64下面的6.0.8的版本拷至

/usr/lib下,重新链接,发现又回到了找不到libstdc++.so.6的情况。。。。后来我下载了6.0.13的版本将其分别复制到两个目录下,在各自的目录中分别建立软链接。依然是找不到Libstdc++.so.6。然后又测试将lib64下面的软连接指向lib下面的6.0.13,依旧失败。反方向建立软连接依旧是报之前的错误。好悲催。。。。

后来,使用Locate 命令找到,在/usr/local/lib64下面还有个6.0.9的包,于是将这个包复制到/usr/local/lib和/usr/lib, /usr/lib64下面,在各自的目录下分别建立软连接。最终命令运行成功。

猜测是因为/usr/local/lib下面我之前将.so.6 和 6.0.*均删除的缘故?经测试并不是这个原因。。。还是因为跟/usr/local/lib64下的.so.6文件链接的是自己的6.0.9的版本会与13冲突?但第一次统一为6.0.3时,为什么不与6.0.3的版本冲突呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐