在运行程序时报错:
- /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'
此时再运行程序已经可以正常运行了.