NoteZ_技术博客 NoteZ_技术博客
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)

NoteZ_技术博客

前端界的小学生
🏠 首页
  • 📚 Web技术
  • 📋 Npm笔记
  • 📑 Markdown
  • 📄 Git笔记
  • 📝 Nginx文档
  • 📓 Linux文档
  • 📖 技术文档
  • 📜 其他文档
  • 🧊 NodeJs
  • 🎡 Express
  • 🔥 Rust
  • 🎉 Koa2
  • 🍃 MongoDB
  • 🐬 MySql
  • 🥦 Oracle
  • 🍁 Python
  • 🍄 JavaScript
  • 🌰 CSS
  • 🧄 HTML
  • 🥑 Canvas
  • 🌽 Nuxt
  • 🍆 React
  • 🥜 Vue
  • 🧅 TypeScript
  • 🌶️ AI
  • 📘 分类
  • 📗 标签
  • 📙 归档
⚜️ 在线编辑 (opens new window)
  • 📁 站点收藏
  • 📦 前端组件库
  • 📊 数据可视化
  • 🌈 开源插件
  • 🎗️ 关于我
  • 🔗 友情链接
GitHub (opens new window)
  • Web技术

  • Git笔记

  • Linux文档

    • CentOS7 -bash:vim:未找到命令
    • CentOS系统中升级Git版本
    • Linux 下 Git 免登录不需重复输入账号和密码
    • Linux 下安装 Nginx 详细教程
    • Linux 中 mysql 数据库的备份与还原
    • Linux 使用 npm 安装 cnpm 镜像
    • Linux 安装 mysql 并设置远程连接
    • linux 环境安装 java 环境和 eclipse
    • Linux 系统命令总结
    • linux安装nvm并快速修改node版本
    • Linux防火墙配置相关笔记
    • Linux(centos7)上安装 Node.js 的 4 种方法(包含npm)
    • Linux(centos7)下 pm2 的安装步骤及问题总结
    • Linux(centos7)下查看端口占用情況
    • 【Linux-编译器gcc|glibc升级】CentOS7.x使用高版本NodeJS时报错解决方案
      • 背景
      • 分析原因
      • 解决方案
      • 执行步骤
      • 踩坑记录
    • 如何在Linux系统(CentOS7.x)上安装Git
    • CentOS 7安装 FFmpeg音频视频处理工具
    • centos7 下通过docker安装sentry
    • CentOS7安装Gitea
    • CentOS7下安装GraphicsMagick或ImageMagick方法
    • Centos安装MySQL
    • Linux-客户端npc内网穿透开机后台自启动
    • linux(contOS_7)下安装git
    • 两台远程Linux服务器之间传输文件的四种方法(scp、rcp、wget、rsync)总结
    • Ubuntu20.x使用root账户远程登录ssh处理方法
    • Ubuntu 更换 apt 源为阿里云镜像源
    • linux 下 CentOS7 安装 LibreOffice 详细过程
    • linux 下 Ubuntu 安装 LibreOffice 方法
    • Linux 下安装 pm2 并设置开机自启动服务
    • Linux 服务器之 systemctl 命令使用详解
    • 在 linux下的 CentOS7 安装 Onlyoffice 详细步骤
    • Linux 下 Gitlab 相关配置记录
    • Linux(Ubuntu)下安装最新版 ffmpeg7
    • Linux (Ubuntu 24.04) 切换软件源为清华源
    • Linux 之 Ubuntu-24.04 安装英伟达显卡驱动
    • Ubuntu 上安装 【docker】 的详细指南
    • Ubuntu 安装 Anaconda 【conda】换源并配置 Python 环境
    • Linux(Ubuntu)安装 open-webui 最新方式汇总
    • linux 安装 ollama 基本步骤
    • Linux 使用 rsync 互相传输同步文件的简单步骤
  • Markdown

  • Nginx文档

  • Npm笔记

  • 技术文档

  • 其他文档

  • 前端开发
  • Linux文档
NoteZ
2023-12-13
目录

【Linux-编译器gcc|glibc升级】CentOS7.x使用高版本NodeJS时报错解决方案

# 背景

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

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

# 分析原因

使用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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

发现只能到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包,然后进行配置、编译、安装、挂载这些步骤,但这样做风险还是有点大的,特别是不太懂的小白很容易把服务器搞崩。

1、安装 devtoolset 8:Devtoolset 8 包括更新的 GCC 和 GLIBC,可以满足 Node.js 18 的要求。使用以下命令安装 Devtoolset 8:

sudo yum install centos-release-scl
sudo yum install devtoolset-8
1
2

2、激活 devtoolset 8:安装完成 Devtoolset 8 后,需要激活 Devtoolset 8 才能使用更新的 GCC 和 GLIBC。使用以下命令激活 Devtoolset 8:

scl enable devtoolset-8 bash
1

3、更新 GCC 和 GLIBC:使用 Devtoolset 8 提供的更新版本替换系统自带的 GCC 和 GLIBC。使用以下命令更新:

sudo yum install devtoolset-8-toolchain
sudo scl enable devtoolset-8 bash
1
2

4、验证更新版本:使用以下命令验证 GCC 和 GLIBC 版本:

gcc --version
ldd --version
1
2

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

# 踩坑记录

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

1、下载 GLIBC 源码:可以从官方网站 (opens new window)或者清华镜像 (opens new window)下载 GLIBC 的源码包,例如 glibc-2.28.tar.gz(不建议装太新的)。

wget https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.28.tar.gz
1

2、解压源码包:使用 tar 命令解压源码包:

tar -xzf glibc-2.28.tar.gz
1

3、编译和安装:切换到源码目录并使用 configure 和 make 命令编译和安装 GLIBC:

cd glibc-2.28
mkdir build
cd build
../configure --prefix=/usr
make
sudo make install
1
2
3
4
5
6

参考文章:https://blog.csdn.net/lc1025082182/article/details/129554635

#Linux#NodeJs
上次更新: 2024/01/30, 00:35:17
Linux(centos7)下查看端口占用情況
如何在Linux系统(CentOS7.x)上安装Git

← Linux(centos7)下查看端口占用情況 如何在Linux系统(CentOS7.x)上安装Git→

最近更新
01
Gitea数据备份与还原
03-10
02
Linux 中使用 rsync 同步文件目录教程
03-10
03
Linux 使用 rsync 互相传输同步文件的简单步骤
03-08
更多文章>
Theme by Vdoing | Copyright © 2019-2025 NoteZ,All rights reserved | 冀ICP备2021027292号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式