在centos7安装Node18的版本时报错如下
node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found (required by node)
解决这个问题饶了比较远的路,这里简单进行一下汇总。
1、安装gcc所需依赖
我是通过nvm直接安装的node,但是版本不兼容,需要升级glibc,而升级glibc需要升级相应的一系列工具,最后才是升级glibc。首先需要的就是升级gcc
yum install -y centos-release-scl bison
yum install -y devtoolset-8-gcc*
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
但是我的yum有问题,所以通过源码的形式安装,报错如下
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
错误信息中说明,安装gcc需要这三个依赖:GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+。
1.1 下载安装包
wget http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
这里可以手动下载也可以wget下载。
1.2 安装GMP
tar -jxvf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure
make
sudo make install
1.3 安装MPFR
tar -jxvf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4
./configure
make
sudo make install
1.4 安装MPC
tar -zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make
sudo make install
2 升级gcc
2.1 下载gcc源码
wget https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
2.2 解压缩源代码
使用tar命令解压缩下载的GCC源代码:
tar -xzf gcc-8.3.0.tar.gz
2.3 创建工作目录
创建一个用于编译GCC的工作目录:
mkdir gcc-build
cd gcc-build
2.4 配置和编译GCC
在工作目录中配置GCC编译选项,并编译GCC。这将需要一些时间来完成:
../gcc-8.3.0/configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j$(nproc)
2.5 安装GCC
编译完成后,安装GCC到指定目录:
sudo make install
2.6 更改配置文件
修改~./bashrc文件
最后加上
export PATH=/usr/local/gcc-8.3.0/bin:$PATH
通过以下命令更新配置
source ~/.bashrc
2.7 查看版本
gcc --version
3、升级glibc
3.1 升级gcc与make
升级GCC(默认为4 升级为8)
yum install -y centos-release-scl bison
yum install -y devtoolset-8-gcc*
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
3.2 升级 make(默认为3 升级为4)
wget http://ftp.gnu.org/gnu/make/make-4.3.tar.gz
tar -xzvf make-4.3.tar.gz && cd make-4.3/
./configure --prefix=/usr/local/make
make && make install
cd /usr/bin/ && mv make make.bak
ln -sv /usr/local/make/bin/make /usr/bin/make
3.3 更新libstdc++.so.6.0.26
# 更新lib libstdc++.so.6.0.26
wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26
# 替换系统中的/usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64/
cd /usr/lib64/
ln -snf ./libstdc++.so.6.0.26 libstdc++.so.6
3.4 更新glibc
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar xf glibc-2.28.tar.gz
cd glibc-2.28/ && mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install
3.5 验证
npm -v
node -v