在运行程序时报错:
/lib/libstdc++.so.6: version `CXXABI_1.3.11' not found
/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found
- 查找原因
未找到 CXXABI_1.3.11 和 GLIBCXX_3.4.26 , 首先查看一下都有哪些版本的 GLIBCXX 和 CXXABI :
使用命令查找GLIBCXX:
strings /lib/libstdc++.so.6 | 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_3.4.20 GLIBCXX_3.4.21 GLIBCXX_3.4.22 GLIBC_2.17 GLIBC_2.18
使用命令查找CXXABI:
strings /lib/libstdc++.so.6 | grep CXXABI
输出:
CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_1.3.8 CXXABI_1.3.9 CXXABI_1.3.10 CXXABI_TM_1 CXXABI_1.3 CXXABI_1.3.2 CXXABI_1.3.6 CXXABI_1.3.9 CXXABI_1.3.1 CXXABI_1.3.5 CXXABI_1.3.8 CXXABI_1.3.4 CXXABI_TM_1 CXXABI_1.3.7 CXXABI_1.3.10 CXXABI_1.3.3
查看后确实没有CXXABI_1.3.11和GLIBCXX_3.4.26
在/lib目录下使用命令查看libstdc++.so.6的软链接:(\为连接符)
ls -l | grep libstdc\+\+.so.6
输出:
lrwxrwxrwx 1 root root 19 Jun 7 16:32 libstdc++.so.6 -> libstdc++.so.6.0.22 -rwxrwxr-x 1 root root 1947272 Mar 16 21:04 libstdc++.so.6.0.22 -rw-rw-r-- 1 root root 2512 Mar 16 21:04 libstdc++.so.6.0.22-gdb.py
发现libstdc++.so.6的软链接是指向libstdc++.so.6.0.22的,相当于系统中设置了libstdc++.so.6的快捷方式为6.0.22版本的libstdc++, 所以就需要将此版本置换为至少6.0.26以上的版本.
- 解决问题
先将libstdc++.so.6.0.28放到/lib下
(可以使用此链接下载:
http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
我个人使用的是arm版的6.0.28版本,版本选择看个人需要
)在lib目录下先删除libstdc++.so.6.0.22的软链接:
rm libstdc++.so.6
再创建libstdc++.so.6.0.28的软链接:
ln -s libstdc++.so.6.0.28 libstdc++.so.6
令libstdc++.so.6指向libstdc++.so.6.0.28.
此时再查看libstdc++的版本:
strings /lib/libstdc++.so.6 | 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_3.4.20 GLIBCXX_3.4.21 GLIBCXX_3.4.22 GLIBCXX_3.4.23 GLIBCXX_3.4.24 GLIBCXX_3.4.25 GLIBCXX_3.4.26 GLIBCXX_3.4.27 GLIBCXX_3.4.28
strings /lib/libstdc++.so.6 | grep CXXABI
输出:
CXXABI_1.3 CXXABI_1.3.1 CXXABI_1.3.2 CXXABI_1.3.3 CXXABI_1.3.4 CXXABI_1.3.5 CXXABI_1.3.6 CXXABI_1.3.7 CXXABI_1.3.8 CXXABI_1.3.9 CXXABI_1.3.10 CXXABI_1.3.11 CXXABI_1.3.12 CXXABI_TM_1
而以下两个版本都已存在:
`CXXABI_1.3.11' `GLIBCXX_3.4.26'
此时再运行程序已经可以正常运行了.