如何解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的报错

本篇博客转载自:
关于libstdc++.so.6: version `GLIBCXX_3.4.20’ not found问题解决

1 问题描述

编译程序或运行程序时,出现类似/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found的报错。

2 问题分析

这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库,将gcc最新版本的动态库替换掉老版本的动态库即可。

3 解决步骤

  • 查看GLBCXX版本
>> strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

GLIBCXX_3.4
GLIBCXX_3.4.1
...
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

可以看到,最高版本为3.4.13,没有对应的3.4.21

  • 查看libstdc++.so.6链接的库
>> ll /usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13 #这是libstdc++.so.6现在链接的库
  • 查看系统更高版本的lib库
>> find / -name libstdc++.so.6*
/usr/lib64/libstdc++.so.6.bak
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.20
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.20-gdb.py
/usr/local/lib64/libstdc++.so.6.0.20 #这里有一个6.0.20版本,比libstdc++.so.6.0.13版本更高    
  • 查看lib库的信息
>> strings /usr/local/lib64/libstdc++.so.6.0.20 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
...
GLIBCXX_3.4.19
GLIBCXX_3.4.20 #这个版本满足我们的需求
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
  • 重新链接
>> cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6.0.20
>> rm -f /usr/lib64/libstdc++.so.6
>> ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容