1 报错出现
1.1 错误日志信息
腾讯引力计划mini项目中计划使用组内的Bon协议来作为信息的载体。从git上拉下来Bon了C++源码及其提供的demo,对demo进行编译后,出现如下报错:
[命令]./bon_demo
[报错]./bon_demo: /lib64/libstdc++.so.6: version 'CXXABI_1.3.9' not found (required by ./bon_demo)
[命令]./server_demo_bon
[报错]./server_demo_bon: /lib64/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found (required by ./server_demo_bon)
[报错]./server_demo_bon: /lib64/libstdc++.so.6: version 'CXXABI_1.3.9' not found (required by ./server_demo_bon)
1.2 报错原因
- 没有链接到CXXABI库的最新的版本
- 没有链接到GLIBCXX库的最新的版本
2 解决问题
2.1 查看当前版本
查看CXXABI库,果然没有CXXABI_1.3.9版本:
查看GLIBCXX库,果然没有GLIBCXX_3.4.21版本:
2.2 查找初始文件
一般来说,libstdc++.so.6仅为软连接,查看其当前指向的是谁:
查找所有libstdc++.so.6*的文件,这里发现我的机子上有很多版本,最高版本已经到6.0.29,肯定已经覆盖了最新版本,那么报错的原因就是libstdc++.so.6链接到的libstdc++版本过低:
进入文件路径验证一下想法,确实链接到的是同目录下的6.0.19(废话…):
2.3 创建新的链接
- 进入上图中搜索出的存在libstdc++.so.6.0.29文件的路径,将上图中出现的libstdc++.so.6.0.29拷贝进/usr/lib64目录
- 删除旧链接
- 并建立新的链接
- 问题解决~~~
2.4 另外
我之前在自己机子上直接将GCC升级到了11.1.0,因此能直接找到libstdc++.so.6.0.29,但是如果没有升级GCC可能就不仅仅是需要修改软链接,而应该首先升级GCC并安装:下载链接