转发大佬文章,稍作了更改,已于参考中标注
执行程序时报错:
libstdc++.so.6: version `GLIBCXX_3.4.20' not found
这是由于libstdc库版本过旧导致
解决办法:
1.1 查看libstdc++.so.6位置
$ sudo find / -name libstdc++.so.6* #ls -l libstdc++.so*
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.24
现在动态库版本是libstdc++.so.6.0.19,还找到一个新版本的动态库libstdc++.so.6.0.24;
接下来我们可以使用新的动态库链接到libstdc++.so.6
1.2 查看libstdc++.so.6软链接
ls -l libstdc++.so*
lrwxrwxrwx 1 root root 19 Feb 14 2018 libstdc++.so.6 -> libstdc++.so.6.0.19
libstdc++.so.6现在版本是libstdc++.so.6.0.19
1.3 查看libstdc++.so.6链接包含的动态库,动态库中确实没有GLIBCXX_3.4.20
strings /usr/lib64/libstdc++.so.6|grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
动态库中确实没有GLIBCXX_3.4.20
查看新版本libstdc
2.1 查看libstdc++.so.6.0.24 链接包含的动态库,有GLIBCXX_3.4.20
strings libstdc++.so.6.0.24所在位置/libstdc++.so.6.0.24 | grep GLIBCXX
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
将libstdc++.so.6.0.24 链接到libstdc++.so.6
3.1 拷贝libstdc++.so.6.0.24
sudo cp libstdc++.so.6.0.24所在位置/libstdc++.so.6.0.24 /usr/lib64
3.2 删除软链接libstdc++.so.6
sudo rm libstdc++.so.6
3.3 建立新软链接libstdc++.so.6
sudo ln -s libstdc++.so.6.0.24 libstdc++.so.6
3.4 查看软链接libstdc++.so.6
ls -l libstdc++.so*
lrwxrwxrwx 1 root root 19 Nov 14 01:54 libstdc++.so.6 -> libstdc++.so.6.0.24
-rw-r--r-- 1 root root 979056 Nov 14 01:41 libstdc++.so.6.0.19
参考: