CentOS 7.9 libstdc++ 版本过低问题

解决 Hugo 报错: /lib64/libstdc++.so.6: version 'GLIBCXX_3.4.20' not found 问题
Solution to errors like /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found

使用 Hugo 时遇到以下错误

hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by hugo)
hugo: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by hugo)
hugo: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by hugo)

在经过一些测试后, 确认安装最新版本的 GCC 可以解决此问题, 适用于 CentOS 7.9

解决方案

检查 libstdc++ 版本

首先检查现有的 libstdc++ 库版本

[root@localhost lib64]# ll libstdc++.so.6*
lrwxrwxrwx. 1 root root       19 Jan  8 10:09 libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root   995840 Sep 30  2020 libstdc++.so.6.0.19

[root@server ~]# strings /usr/lib64/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_DEBUG_MESSAGE_LENGTH

安装新版本的 GCC

可以通过使用 Ghettoforge 仓库来安装新版本的 GCC

yum install https://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
yum install gcc10-libstdc++

你可以在 Ghettoforge 软件包仓库地址中找到 gcc10-libstdc++-10.2.1-7.gf.el7.x86_64.rpm, 可以直接使用链接进行安装。备份下载

yum install http://mirror.ghettoforge.org/distributions/gf/el/7/gf/x86_64/gcc10-libstdc++-10.2.1-7.gf.el7.x86_64.rpm

查找并更新 libstdc++

查找 libstdc++ 文件位置

[root@localhost ~]# find / -type f -name "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/gcc-10.2.1/usr/lib64/libstdc++.so.6.0.28
/opt/gcc-10.2.1/usr/share/gdb/auto-load/opt/gcc-10.2.1/usr/lib64/__pycache__/libstdc++.so.6.0.28-gdb.cpython-36.opt-1.pyc
/opt/gcc-10.2.1/usr/share/gdb/auto-load/opt/gcc-10.2.1/usr/lib64/__pycache__/libstdc++.so.6.0.28-gdb.cpython-36.pyc
/opt/gcc-10.2.1/usr/share/gdb/auto-load/opt/gcc-10.2.1/usr/lib64/libstdc++.so.6.0.28-gdb.py
/opt/gcc-10.2.1/usr/share/gdb/auto-load/opt/gcc-10.2.1/usr/lib64/libstdc++.so.6.0.28-gdb.pyc
/opt/gcc-10.2.1/usr/share/gdb/auto-load/opt/gcc-10.2.1/usr/lib64/libstdc++.so.6.0.28-gdb.pyo

将新版本的 libstdc++ 文件复制到 /usr/lib64/ 目录

[root@localhost ~]# cp /opt/gcc-10.2.1/usr/lib64/libstdc++.so.6.0.28 /usr/lib64/

更新符号链接

删除旧的符号链接, 并创建指向新版本库的符号链接

[root@localhost ~]# cd /usr/lib64
[root@localhost lib64]# rm -f libstdc++.so.6
[root@localhost lib64]# ln -s libstdc++.so.6.0.28 libstdc++.so.6
[root@localhost lib64]# ll libstdc++.so.6*
lrwxrwxrwx  1 root root       19 Jan  8 10:34 libstdc++.so.6 -> libstdc++.so.6.0.28
-rwxr-xr-x. 1 root root   995840 Sep 30  2020 libstdc++.so.6.0.19
-rwxr-xr-x  1 root root 17104448 Jan  8 10:31 libstdc++.so.6.0.28

检查更新后的库版本

确认库已更新到所需的版本

[root@localhost ~]# strings /usr/lib64/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

通过以上步骤, 成功解决了 Hugo 对 libstdc++.so.6 库版本的依赖问题


原文

Solution to errors like /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found

最后更新于 2025-02-17
使用 Hugo 构建
主题 StackJimmy 设计