1. 场景


  • centos7离线安装Node.js-v20.15.0查看版本时报以下错误

2. 原因


  • 查看系统内安装的glibc版本,然后再根据分析可得知 新版的node v18开始 都需要GLIBC_2.27支持,可是目前系统内却没有那么高的版本
strings /lib64/libm.so.6 |grep GLIBC

strings /lib64/libc.so.6 |grep GLIBC_

3. 解决办法


3.1 更新glibc

  • 根据提示 安装所需要的glibc-2.28
# 下载文件
wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz

# 解压
tar -xf glibc-2.28.tar.gz

# 进入并创建build目录进入
cd glibc-2.28/ && mkdir build  && cd build

## 配置
# --with-binutils=/usr/bin是gcc默认配置,可以通过 which gcc 命令查看gcc位置
../configure --prefix=/usr CFLAGS="-Og -g -g3 -ggdb -gdwarf-4" CXXFLAGS="-Og -g -g3 -ggdb -gdwarf-4" --disable-werror --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

## 以下三个使用那个都可以
# 根据查询出来的gcc路径修改配置
../configure --prefix=/usr CFLAGS="-Og -g -g3 -ggdb -gdwarf-4" CXXFLAGS="-Og -g -g3 -ggdb -gdwarf-4" --disable-werror --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/opt/rh/devtoolset-11/root/usr/bin

# 或者不写--with-binutils配置也会使用默认gcc
../configure --prefix=/usr CFLAGS="-Og -g -g3 -ggdb -gdwarf-4" CXXFLAGS="-Og -g -g3 -ggdb -gdwarf-4" --disable-werror --disable-profile --enable-add-ons --with-headers=/usr/include

# 最少参数配置
../configure --prefix=/usr CFLAGS="-Og -g -g3 -ggdb -gdwarf-4" CXXFLAGS="-Og -g -g3 -ggdb -gdwarf-4" --disable-werror
  • 下载文件并解压

  • 查看gcc位置

  • 我的gcc不是默认位置,用修改后的配置执行,不然会因为老版本报错

  • 安装

make 和 make install在linux中就是安装软件的意思 简单这么理解就好。

# make -j开启多线程,不然会很慢,要一个小时以上
make -j24
或
make -j24 2>&1 | tee build_glibc.log

# 安装
make install

# 查看
ll -n /usr/lib64/libstdc++.so.6
  • make

  • make install

3.2 验证

node -v

npm -v

3.3 可能出现的错误

configure: error:

*** These critical programs are missing or too old: make bison compiler

*** Check the INSTALL file for required versions.


这里说的是:make、bison、compiler 这个三版本太老,我遇到的是compiler版本太老

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐