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

本文详细记录了解决CMake安装过程中遇到的libstdc++库版本不匹配导致的bootstrap步骤失败问题。通过检查并统一/usr/lib和/usr/lib64目录下的libstdc++库版本,最终成功解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

 参见这篇日志的分析 http://blog.youkuaiyun.com/jindingwang/article/details/7569466

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

以在/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的版本冲突呢?

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值