解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题方法总结

在执行程序时,提示: ./a.out: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./a.out)


我是在编译GCC源码升级GCC版本后出现的该问题, 这是由于GCC升级后标准库还是旧的导致的,解决方法如下:

方法一:

    在编译GCC的目录中,查找libstdc++ 相关的库,并复制到/usr/lib目录下,并重新建立软连接就可以。

1. 切换到root用户 su -

2. 进入编译GCC的目录,  我是在/opt下编译的, cd /opt/build-gcc

3. 查找libstdc库    find ./ -name libstdc++.so*    


[root@localhost build-gcc]# find ./ -name libstdc++.so*  
./stage1-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./stage1-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./stage1-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./prev-i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
[root@localhost build-gcc]# 

4.  cp ./i686-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21  /usr/lib   64位系统可能在/usr/lib64下

5. cd  /usr/lib

6. ls -l |grep libstdc++      可以看到如下

lrwxrwxrwx   1 root root       19 Mar  2 19:07 libstdc++.so.6 -> libstdc++.so.6.0.8
-rwxr-xr-x   1 root root  9254976 Mar  2 19:05 libstdc++.so.6.0.21
-rwxr-xr-x   1 root root   936908 Jul 10  2007 libstdc++.so.6.0.8

7. rm -f libstdc++.so.6
8. ln -s libstdc++.so.6.0.21 libstdc++.so.6.0.8
一切应该都恢复正常了


方法二:
在编译时使用静态链接标准库的方法, 编译时添加  -static-libstdc++选项



  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值