GLIBCXX_3.4.26 not found

  • 问题

    在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
    

你可能感兴趣的:(GLIBCXX_3.4.26 not found)