首页
Javascript
Html
Css
Node.js
Electron
移动开发
小程序
工具类
服务端
浏览器相关
前端收藏
其他
关于
公司注册

'GLIBCXX_3.4.21' not found--centos 升级gcc

2021年09月14日 发布 阅读(11662) 作者:Jerman

问题

linux服务器跑node,很多时候会碰到下面的问题,当然不限于GLIBCXX_3.4.21,可能是缺少其他的。

  1. /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found

解决

检查下gcc的版本

  1. gcc -v

输出

  1. gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

检查当前系统的动态库

  1. strings /usr/lib64/libstdc++.so.6 | grep GLIBC

输出
可以看到确认缺少GLIBCXX_3.4.21

  1. GLIBCXX_3.4
  2. GLIBCXX_3.4.1
  3. GLIBCXX_3.4.2
  4. GLIBCXX_3.4.3
  5. GLIBCXX_3.4.4
  6. GLIBCXX_3.4.5
  7. GLIBCXX_3.4.6
  8. GLIBCXX_3.4.7
  9. GLIBCXX_3.4.8
  10. GLIBCXX_3.4.9
  11. GLIBCXX_3.4.10
  12. GLIBCXX_3.4.11
  13. GLIBCXX_3.4.12
  14. GLIBCXX_3.4.13
  15. GLIBCXX_3.4.14
  16. GLIBCXX_3.4.15
  17. GLIBCXX_3.4.16
  18. GLIBCXX_3.4.17
  19. GLIBCXX_3.4.18
  20. GLIBCXX_3.4.19
  21. GLIBC_2.3
  22. GLIBC_2.2.5
  23. GLIBC_2.14
  24. GLIBC_2.4
  25. GLIBC_2.3.2
  26. GLIBCXX_DEBUG_MESSAGE_LENGTH

查看当前动态库的位置和版本

  1. find / -name libstdc++.so.6*

输出

  1. /usr/lib64/libstdc++.so.6.0.19
  2. /usr/lib64/libstdc++.so.6
  3. /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
  4. /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
  5. /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
  6. /data/result/SegParser/libstdc++.so.6
  7. /data/download_record/SegParser/libstdc++.so.6
  8. /data/segdsegy/SegParser/libstdc++.so.6
  1. ls -l libstdc++.so*

输出

  1. lrwxrwxrwx 1 root root 19 Mar 18 11:39 libstdc++.so.6 -> libstdc++.so.6.0.19
  2. -rwxr-xr-x 1 root root 991616 Oct 30 14:39 libstdc++.so.6.0.19

升级GCC

GCC的各个版本http://ftp.gnu.org/gnu/gcc/ ,根据自己需要选择,如果不知道,就选择最新的吧

下载GCC版本,这里选择最新的

假设下载文件放在/data/gcc目录

  1. cd /data/gcc
  2. wget http://ftp.gnu.org/gnu/gcc/gcc-11.2.0/gcc-11.2.0.tar.gz

解压

  1. tar -zxvf gcc-11.2.0.tar.gz

下载各项依赖

  1. cd gcc-11.2.0
  2. ./contrib/download_prerequisites

创建编译目录
还是在gcc-11.2.0目录

  1. mkdir build
  2. cd build
  3. ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

编译
编译的过程可能需要几个小时,耐心等待

  1. make

安装
编译完成后,执行安装

  1. make install

检查gcc版本
如果版本还是旧的,执行reboot重启服务器,再查看

  1. gcc -v

创建软链接

执行最开始的步骤,检查动态库是否正常

  1. strings /usr/lib64/libstdc++.so.6 | grep GLIBC

如果还是没有GLIBCXX_3.4.21

查找GCC编译时生成的最新的动态库位置

  1. find / -name "libstdc++.so*"

输出

  1. /usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
  2. /usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
  3. /usr/lib/libstdc++.so.6
  4. /usr/lib/libstdc++.so.6.0.19
  5. /usr/local/qcloud/stargate/lib/libstdcxx-x86_64/libstdc++.so.6.0.20
  6. /usr/local/qcloud/stargate/lib/libstdc++.so.6
  7. /usr/local/qcloud/stargate/lib/libstdcxx-arm64/libstdc++.so.6.0.24
  8. /usr/local/lib64/libstdc++.so.6
  9. /usr/local/lib64/libstdc++.so.6.0.29
  10. /usr/local/lib64/libstdc++.so
  11. /usr/local/lib64/libstdc++.so.6.0.29-gdb.py
  12. /usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.py
  13. /usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyc
  14. /usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.19-gdb.pyo
  15. /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
  16. /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
  17. /usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
  18. /usr/lib64/libstdc++.so.6
  19. /usr/lib64/libstdc++.so.6.0.19
  20. /usr/lib64/libstdc++.so.6.0.29
  21. /usr/lib64/libstdc++.so.6.0.20

可以看到,有更高的版本/usr/local/lib64/libstdc++.so.6.0.29

创建软链接

  1. cp /usr/local/lib64/libstdc++.so.6.0.29 /usr/lib64/
  2. rm libstdc++.so.6
  3. ln -s libstdc++.so.6.0.29 libstdc++.so.6

再次检查动态库

  1. strings /usr/lib64/libstdc++.so.6 | grep GLIBC

输出

  1. GLIBCXX_3.4
  2. GLIBCXX_3.4.1
  3. GLIBCXX_3.4.2
  4. GLIBCXX_3.4.3
  5. GLIBCXX_3.4.4
  6. GLIBCXX_3.4.5
  7. GLIBCXX_3.4.6
  8. GLIBCXX_3.4.7
  9. GLIBCXX_3.4.8
  10. GLIBCXX_3.4.9
  11. GLIBCXX_3.4.10
  12. GLIBCXX_3.4.11
  13. GLIBCXX_3.4.12
  14. GLIBCXX_3.4.13
  15. GLIBCXX_3.4.14
  16. GLIBCXX_3.4.15
  17. GLIBCXX_3.4.16
  18. GLIBCXX_3.4.17
  19. GLIBCXX_3.4.18
  20. GLIBCXX_3.4.19
  21. GLIBCXX_3.4.20
  22. GLIBCXX_3.4.21
  23. GLIBCXX_3.4.22
  24. GLIBCXX_3.4.23
  25. GLIBCXX_3.4.24
  26. GLIBCXX_3.4.25
  27. GLIBCXX_3.4.26
  28. GLIBCXX_3.4.27
  29. GLIBCXX_3.4.28
  30. GLIBCXX_3.4.29
  31. GLIBC_2.2.5
  32. GLIBC_2.3
  33. GLIBC_2.14
  34. GLIBC_2.6
  35. GLIBC_2.4
  36. GLIBC_2.16
  37. GLIBC_2.17
  38. GLIBC_2.3.2

可以看到,已经有了GLIBCXX_3.4.21,还是更高版本的一些库

到此问题解决

版权声明:本站文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议,如需转载,请注明出处
  • 'GLIBCXX_3.4.21' not found--centos 升级gcc

    gcc版本老旧,经常会碰到的问题:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found。不要在网上找各种方法,直接升级gcc吧

    发布:2021-09-14 阅读(11662)

  • linux下安装yarn

    发布:2021-09-13 阅读(3091)

  • redis启动多个实例,配置多个端口

    redis配置多个端口,redis启动多个实例

    发布:2020-08-11 阅读(3487)

  • LINUX挂载硬盘(不分区)的方法

    linux如何挂载新买的硬盘?

    发布:2020-06-21 阅读(3593)

  • vim编辑nginx conf文件时,设置高亮/显示行号

    vim编辑nginx conf文件时,设置高亮/显示行号

    发布:2020-06-19 阅读(2769)

  • vi/vim打开文件提示Found a swap file by the name

    vi/vim打开文件提示Found a swap file by the name

    发布:2020-06-04 阅读(1796)

  • C++ compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)

    linux报错:C++ compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++)

    发布:2020-06-01 阅读(2922)

  • linux下安装nodejs

    linux下如何安装nodejs

    发布:2020-06-01 阅读(2056)

  • CentOS7 linux下yum安装redis以及使用

    linux下安装 redis,以及相关使用

    发布:2020-06-01 阅读(1475)

  • linux下通过yum安装mongodb

    linux下通过yum安装mongodb

    发布:2020-05-31 阅读(2913)

  • Linux rpm命令详解

    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序

    发布:2019-08-02 阅读(1624)

  • Linux中apt与apt-get命令的区别与解释

    Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt 命令的引入。其实早在 2014 年,apt 命令就已经发布了第一个稳定版,只是直到 2016 年的 Ubuntu 16.04 系统发布时才开始引人关注。随着 apt install package 命令的使用频率和普遍性逐步超过 apt-get install package,越来越多的其它 Linux 发行版也开始遵循 Ubuntu 的脚步,开始鼓励用户使用 apt 而不是 apt-get。

    发布:2019-03-04 阅读(1859)

  • centos7设置、查看、删除环境变量的方法

    centos查看环境变量与设置环境变量在使用过程中很常见,本文整理了一些常用的与环境变量相关的命令,感兴趣的朋友可以参考下希望对你有所帮助

    发布:2018-12-27 阅读(5565)

  • linux CentOS 安装oh my Zsh

    linux cenos下安装oh my zsh,oh my zsh 用于管理zsh配置,使shell界面更美观。 Zsh 是一款功能强大终端(shell)软件,既可以作为一个交互式终端,也可以作为一个脚本解释器。它在兼容 Bash 的同时 (默认不兼容,除非设置成 emulate sh) 还有提供了很多改进。

    发布:2018-12-20 阅读(5632)

  • linux云服务通过Nginx绑定多个域名

    通过Nginx反向代理,在一个云服务器上绑定多个域名,不同的域名访问不同的目录,端口

    发布:2018-10-11 阅读(2245)

  • CentOS 7上安装Nginx

    如何在Linux(CentOS 7)上安装Nginx,作为反向代理服务器。

    发布:2018-10-11 阅读(2757)

  • tail命令详情

    命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,那么会使用标准输入。Number 变量指定将多少单元写到标准输出。Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),那么从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件

    发布:2017-05-23 阅读(2855)