一、写在前面

好久不见~最近升级了一下Linux服务器的node版本,升级node16以上的就会出现各种编译报错。

node: /lib64/libm.so.6: version ‘GLIBC_2.27‘ not found (required by node)
如此
我也试着处理了一下,别的还好,就是编译时间太长了,差不多一个多小时。

关注公众号“笔优站长”可阅读全部文章哟。

二、解决方案

CentOS7安装Node v20.13.1的版本时报错如下

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+。

三、解决方案

按照这个步骤,挨着执行就可以了我后面放个sh脚本。 直接在根目录下直接执行就可以了

3.1下载安装包

下载地址: https://gcc.gnu.org/pub/gcc/infrastructure/

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下载了。

3.2安装GMP
tar -jxvf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure
make
sudo make install
3.3安装GMP
tar -jxvf mpfr-3.1.4.tar.bz2
cd mpfr-3.1.4
./configure
make
sudo make install
3.4安装MPC
tar -zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure
make
sudo make install
四、升级gcc
4.1 下载gcc源码
wget https://ftp.gnu.org/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz
4.2 解压缩源代码

使用tar命令解压缩下载的GCC源代码:

tar -xzf gcc-8.3.0.tar.gz
4.3 创建工作目录

创建一个用于编译GCC的工作目录:

mkdir gcc-build
cd gcc-build
4.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)
4.5 安装GCC

编译完成后,安装GCC到指定目录:

sudo make install
4.6 安装GCC

修改~./bashrc文件,最后执行下面这个

export PATH=/usr/local/gcc-8.3.0/bin:$PATH

通过以下命令更新配置

source ~/.bashrc

查看版本 是否安装成功

gcc --version
五、升级glibc
5.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++
5.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
5.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
5.4更新libstdc++.so.6.0.26
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

执行完上面的就基本上ok了,下面再验证一下

六、实测
node -v
npm -v

好了,大功告成~
在这里插入图片描述
一切正常,编译也不会报错了。

七、写在后面

有问题请留言或者@博主,谢谢支持o( ̄︶ ̄)o~

感谢您的阅读,如果此文章或项目对您有帮助,请扫个二维码点个关注吧,若可以的话再给个一键三连吧!

公众号阅读的朋友可以点一下右下角的在看分享哦。

GitHub有开源项目,需要的小伙伴可以顺手star一下!

GitHub: https://github.com/langyuxiansheng

更多信息请关注公众号: “笔优站长”

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐