【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version `GLIBC_2.27‘ not found

【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version `GLIBC_2.27' not found

文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验🤝

背景

最近做一个前端项目Jenkins的自动构建时,项目使用nodejs18,正好公司Jenkins节点有些不够用,就用了台资源空余比较多的服务器用于充当Jenkins节点,配置好NodeJS路径后,构建时产生报错如下:

node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)

分析原因

使用strings命令查看当前glibc支持的版本

# 使用strings命令查看
strings /lib64/libc.so.6 |grep GLIBC_
# 查看结果如下:
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

发现只能到2.17
执行ldd --version也会看到glibc版本是2.17

解决方案

  1. 升级 gcc 和 glibc 版本:注意,在升级前备份重要数据,并仔细阅读相关文档和使用说明。
  2. 使用其他发行版:可以考虑使用其他发行版,如 Ubuntu 或 Fedora,这些发行版默认已经安装了适用于 Node.js 18 的 gcc 和 glibc 版本。
  3. 使用 Node.js 16:Node.js 16 是一个长期支持版本(LTS),它需要的 gcc 和 glibc 版本要求相对较低,可能与你的系统版本兼容。您可以尝试使用 Node.js 16,它可以提供类似于 Node.js 18 的功能,并在未来几年内受到支持和更新。

小结
作为硬核技术派头铁程序员,我当然选择方案一。

执行步骤

我们可以手动下载gcc包glibc包,然后进行配置、编译、安装、挂载这些步骤,但这样做风险还是有点大的,特别是不太懂的小白很容易把服务器搞崩。

推荐方式

这里推荐先使用devtoolset工具进行自动安装,操作步骤如下:

  1. 安装 devtoolset 8:Devtoolset 8 包括更新的 GCC 和 GLIBC,可以满足 Node.js 18 的要求。使用以下命令安装 Devtoolset 8:
sudo yum install centos-release-scl
sudo yum install devtoolset-8
  1. 激活 devtoolset 8:安装完成 Devtoolset 8 后,需要激活 Devtoolset 8 才能使用更新的 GCC 和 GLIBC。使用以下命令激活 Devtoolset 8:
scl enable devtoolset-8 bash
  1. 更新 GCC 和 GLIBC:使用 Devtoolset 8 提供的更新版本替换系统自带的 GCC 和 GLIBC。使用以下命令更新:
sudo yum install devtoolset-8-toolchain
sudo scl enable devtoolset-8 bash

  1. 验证更新版本:使用以下命令验证 GCC 和 GLIBC 版本:
gcc --version
ldd --version

如果显示的 GCC 版本为 8.x.x,并且显示的 GLIBC 版本为 2.28 或更高版本,则说明已成功更新。
5. 再执行node -v命令来看看是否还有报错?

踩坑记录

执行ldd --version后发现glibc还是2.17版本,所以需要手动升级了,附上手动升级glibc的步骤:

  1. 下载 GLIBC 源码:可以从官方网站或者清华镜像下载 GLIBC 的源码包,例如 glibc-2.28.tar.gz(不建议装太新的)。
  2. 解压源码包:使用 tar 命令解压源码包:
tar -xzf glibc-2.28.tar.gz
  1. 编译和安装:切换到源码目录并使用 configure 和 make 命令编译和安装 GLIBC:
cd glibc-2.28
mkdir build
cd build
../configure --prefix=/usr
make
sudo make install
  1. 安装成功。

文章已收录至https://lichong.work,转载请注明原文链接。
ps:欢迎关注公众号“Fun肆编程”或添加我的私人微信交流经验🤝

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~往期精选🪶~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

【Docker】入门教程-基本概念解读
【前端-React Native】移动端原生开发整合React Native Elements教程-安卓示例
【前端-开发环境】使用NVM实现不同nodejs版本的自由切换(NVM完整安装使用手册)
【前端-NPM私服】内网使用verdaccio搭建私有npm服务器
【前端-IE兼容】Win10和Win11使用Edge调试前端兼容IE6、IE7、IE8、IE9、IE10、IE11问题
【前端-工程化】React项目工程化记录-内置项目活文档(老项目升级优化-集成Hosky/ESLint/Prettier-升级Webpack/Babel/NodeSass/React)
【工具-TWRP-frp-Termux】旧手机暴改成免费云服务器-MIUI刷TWRP安装magisk获取root
【工具-Shell脚本】java程序产品包模板-linux和windows通用shell启动停止脚本(无需系统安装Java运行环境)
【工具-Nginx】从入门安装到高可用集群搭建
【工具-Nginx】Nginx高性能通用配置文件-注释版-支持防刷限流、可控高并发、HTTP2、防XSS、Gzip、OCSP Stapling、负载、SSL
【工具-WireShark】网络HTTP抓包使用教程
【后端-maven打包】通过profile标签解决同时打jar包 war包需求
【架构-DDD】使用领域驱动设计-互联网未来架构设计之道(一)
【后端-SpringCache】基于Spring Cache封装一个能够批量操作的Redis缓存记录下踩坑历程(pipeline或mget封装)
【后端-SkyWalking】SkyWalking前后端开发环境搭建详细教程步骤-6.x/7.x/8.x版本通用-插件二次开发利器(一)
【后端-Quartz】Springboot整合Quartz支持集群环境-设计业务与框架分离及实现定时任务调度

✨欢迎为耿直少年点赞、关注、收藏!!!

👇👇👇

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
报错信息 "node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)" 表明在使用NodeJS18,系统中缺少了GLIBC 2.27版本所需的库文件。 解决这个问题的方法是升级系统的GLIBCGCC版本。首先,你需要确保你的系统是CentOS 7.9版本。然后,按照以下步骤来进行升级: 1. 检查GCC版本:执行命令 `gcc --version`,确认GCC版本是否为8.x.x。如果不是,则需要升级GCC。可以使用以下命令来安装最新版本的GCC: ``` sudo yum install centos-release-scl sudo yum install devtoolset-8-toolchain scl enable devtoolset-8 bash ``` 2. 检查GLIBC版本:执行命令 `ldd --version`,确认GLIBC版本是否为2.28或更高版本。如果不是,则需要升级GLIBC。可以使用以下命令来安装最新版本的GLIBC: ``` sudo yum install glibc-devel ``` 3. 更新系统:执行以下命令更新系统并安装所有可用的更新: ``` sudo yum update ``` 4. 验证升级结果:执行命令 `node -v` 来验证是否还有报错。如果没有报错,说明升级成功。 通过以上步骤,你应该能够解决 "node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)" 的报错问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [编译器gcc/glibc升级CentOS7.9使用NodeJS18报错/lib64/libm.so.6: version `GLIBC_2.27‘ not found](https://blog.csdn.net/lc1025082182/article/details/129554635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fun肆编程

欢迎投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值