运行应用程序时出现GLIBCXX_3.4.26not found问题

一、业务分析

1.运行环境

运行环境: ubuntu18.04
gcc版本: 8.x.x

2.业务场景

业务场景: 在docker中建立了两个容器,一个容器作用是存放数据库,另一个容器作用为:实现数据转化操作,在这两个容器中运行应用程序没有出现问题,可以跑通程序.

此时,将所有操作和程序转移到linux下执行,出现报错信息:
/usr/lib/x86_64-linux-gun/libstdc++.so.6:version ‘GLIBCXX_3.4.26’ not found

3.错误分析

经过查找资料,初步判断问题出现原因是:安装的gcc版本生成的动态库没有替换老版本gcc的动态库,导致GLIBCXX中的版本比较低导致出现错误.

4.解决思路

将gcc最新版本的动态库替换系统中老版本的动态库即可。

二、具体操作步骤

1.查询现有的支持:

指令:strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

操作结果:

[root@ zmq]# 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_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH

此时发现,最高版本是GLIBCXX_3.4.25,确实没有GLIBCXX_3.4.26,所以我们要进行升级操作.

2.查找本机中是否存在升级

操作指令:find / -name “libstdc++.so.6*”

[root@]# 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

发现这里面也没有我们需要的GLIBCXX_3.4.26,那就要考虑下载了

但是如果这里面有你需要的包,那就可以直接升级,再查询升级,就好啦

3.获取GLIBCXX_3.4.26包

3.1 下载GLIBCXX_3.4.26

GLIBCXX_3.4.26包下载地址:http://www.vuln.cn/9154

3.2 从docker复制文件到本机

由于我在docker中可以运行,所以我就去docker里面strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX看了下,发现有GLIBCXX_3.4.26,我就直接复制到本机下了

指令:docker cp 容器名:文件路径 /要复制到本机的目录

4.升级

步骤一:将下载的包放到 /usr/lib64 下
cp libstdc++.so.6.0.26 /usr/lib64/

步骤二: 到 /usr/lib64 目录下
cd /usr/lib64/

步骤三:删除现在的libstdc++.so.6
rm -rf libstdc++.so.6

步骤四:重新建立链接
ln -s libstdc++.so.6.0.26 libstdc++.so.6

三、实现结果

查询升级后是否有GLIBCXX_3.4.26:strings libstdc++.so.6 | grep GLIBCXX

结果可以查到GLIBCXX_3.4.26,同时程序也可以跑起来了

以上就是运行应用程序时出现GLIBCXX_3.4.26not found问题的相关解决办法.

  • 16
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值