解决 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