特别感谢,本篇是 博主 断剑zou天涯 的内容的 添加了 “很多坑的解决办法” 的版本。
站在巨人肩膀上。
参考原文:
node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found问题解决方案
一、报错
1.报错内容
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
2.原因
从 nodejs 18.x.x 开始,都需要 GLIBC_2.27 的支持,然而我们没有这个版本
二、解决
1.在 /usr/local 目录下载 GLIBC_2.28(高版本)
cd /usr/local
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
如果执行下载命令,发现无法下载,那么就需要手动下载,此处需要使用魔法!
2.解压,并且创建 build 目录
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
3.更新 glibc
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
注意,此处可能会发生报错:
configure: error:
*** These critical programs are missing or too old: make bison compiler
*** Check the INSTALL file for required versions.
4.更新 gcc
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
注意,执行 yum install -y devtoolset-8-gcc*,可能会发生报错,报错和解决办法参阅:
请下面两篇一起看,否则你改完步骤1的 .repo 文件,步骤2里还要改。
步骤1(配置 .repo 镜像源):https://blog.csdn.net/qq_43768851/article/details/140112143?spm=1001.2014.3001.5501
步骤2(解决 GPGKEY 不匹配问题):https://blog.csdn.net/qq_43768851/article/details/140113001?spm=1001.2014.3001.5501
5.备份原有的 gcc 和 g++ 文件(给它们改个名字)
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
6.使用新的 gcc 和 g++ 文件(创建软连接)
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
7.下载 make
cd /usr/local
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
7.解压并进入
tar -xzvf make-4.3.tar.gz && cd make-4.3/
8.配置一下
运行该目录下的 configure 配置文件,来配置 make 的编译和安装参数
指定安装目录为 /usr/local/make
./configure --prefix=/usr/local/make
9.配置安装make
make && make install
10.备份make
cd /usr/bin/ && mv make make.bak
11.安装 bison 依赖
yum install -y bison
12.进入 glibc 创建 build 目录,并开始编译和安装
cd /usr/local/glibc-2.28/build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
执行成功的 output 末尾是这样的,大家自己检查:
13.安装
make && make install
14.查看 动态链接库
输出如下就是没问题
strings /usr/lib64/libstdc++.so.6 | grep CXXABI
15.下载更新文件
更新libstdc++.so.6.0.26
cd usr/local/
wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26
16.copy一份到 /usr/lib64/,并创建软连接
cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6
三、解决
1.运行一下试试
npm -v
node -v