CentOS7安装nodejs18及以上版本会报错,glibc版本过低。
升级glibc到2.28。
查看glibc版本号
# ldd --version
1、下载glibc2.28并创建build目录
cd
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
2、升级gcc
yum install -y centos-release-scl
yum install -y devtoolset-8-gcc*
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
配置编译glibc环境(configure)时报错complier,可能还需要执行
scl enable devtoolset-8 bash
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
3、升级make
cd
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
4、升级 libstdc++
yum whatprovides libstdc++.so.6 # 不理解什么意思
yum update -y libstdc++.x86_64 # 不理解什么意思
cd
wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
unzip libstdc.so_.6.0.26.zip
cp libstdc++.so.6.0.26 /lib64/
cd /lib64
# 把原来的命令做备份
cp libstdc++.so.6 libstdc++.so.6.bak
rm -f libstdc++.so.6
# 重新链接
ln -s libstdc++.so.6.0.26 libstdc++.so.6
5、编译安装
cd ~/glibc-2.28/build
# 配置环境
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
# 如果配置报错GNU ld,需要安装binutils
yum install binutils
# 如果配置报错bison,需要安装bison
yum install bison
# 安装后再重新执行../configure
# 编译安装glibc
make # 注意这个耗时较长,至少需要几分钟服务器性能差可能更长
make install # 注意这个耗时较长,但比上一个短一些
参考:
https://zhuanlan.zhihu.com/p/649296127
https://juejin.cn/post/7136534098226446373