node: /lib64/libm.so.6: version ‘GLIBC_2.27‘ not found (required by node)
·
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版本太老

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




所有评论(0)