关于libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决


在系统重新启动后,启动相应的服务是出现如题错误:

libstdc++.so.6: version `GLIBCXX_3.4.20' not found

这个错误是目前的libstdc++.so.6没有对应的GLBCXX造成的。可以通过如下命令查看:

[ss@server1 ~]$ 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.20。
通过查看libstdc++.so.6可以看到它链接到了另外一个库

[ss@server1 ~]$ ll /usr/lib64/libstdc++.so.6
lrwxrwxrwx. 1 root root 19 3月 31 2016 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13

接下来看看系统还有没有更高版本的lib库

[ss@server1 service]# 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版本,查看它的信息

[root@spider-server1 service]# 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

好的,接下来应用可以跑起来了。

推荐阅读更多精彩内容