-
问题
在linux下执行程序报一下错误
./demo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./demo)
-
问题分析
因为安装的gcc版本比较高,生成的动态库没有替换老版本gcc的动态库,GLIBCXX中的版本比较低,将gcc最新版本的动态库替换系统中老版本的动态库即可。
-
查询现有的支持
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
[root@83955d05 roach]# strings libstdc++.so.6.0.26 | grep GLIBCXX_* 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_DEBUG_MESSAGE_LENGTH
可以发现只支持到
3.4.19
,离我们的3.4.26
还有很远的距离所以我们需要升级
-
查找本机中是否存在升级
find / -name "libstdc++.so.6*"
[root@83955d05 roach]# find / -name "libstdc++.so.6*" /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.0.19 /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo /opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.py /opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyc /opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyo /opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py /opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc /opt/rh/devtoolset-7/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo /opt/rh/devtoolset-9/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.py /opt/rh/devtoolset-9/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyc /opt/rh/devtoolset-9/root/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyo /opt/rh/devtoolset-9/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py /opt/rh/devtoolset-9/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc /opt/rh/devtoolset-9/root/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
发现也没有我们需要的支持,那我们需要下载一个需要的包
如果存在需要的包就不用下载了,直接走升级 -
下载需要的包
找了一圈,没有找到官网可以下载,不过有个博客上有有个包可以用,博客地址:
http://www.vuln.cn/9154
-
升级
# 将下载的包放到 /usr/lib64 下 [root@83955d05 roach]# cp libstdc++.so.6.0.26 /usr/lib64/ # 到 /usr/lib64 目录下 [root@83955d05 roach]# cd /usr/lib64/ # 删除 [root@83955d05 lib64]# rm -rf libstdc++.so.6 # 重新链接 [root@83955d05 lib64]# ln -s libstdc++.so.6.0.26 libstdc++.so.6 # 查询升级后是否是我们想要的 [root@83955d05 lib64]# strings libstdc++.so.6 | grep GLIBCXX
网友评论