安装 Glibc-2.28

# 下载并解压
wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz

tar zvxf glibc-2.28.tar.gz
cd glibc-2.28
# 创建临时文件
mkdir build && cd build

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 报错
checking for python3... python3
checking version of python3... 3.7.4, ok
configure: error:
*** These critical programs are missing or too old: make bison compiler
*** Check the INSTALL file for required versions.

升级gcc与make

安装GLIBC所需的依赖 可以在 glibc 目录下的INSTALL中找到, 该版本需要 GCC 4.9 以上 及 make 4.0 以上

升级gcc

# 启用额外的仓库**:如果您的系统是基于Red Hat的,您可能需要启用 `PowerTools` 仓库。可以通过以下命令启用:
yum install -y centos-release-scl
# 清理缓存
yum clean all
yum makecache

# 安装
yum install -y devtoolset-8-gcc*
# 直接安装 GCC-8 
$ yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils 
# 设置环境变量 
$ echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile 
$ source /etc/profile

升级 make

$ wget https://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 
# backup 
$ ln -sv /usr/local/make/bin/make /usr/bin/make

安装


yum install bison

继续编译

# 进入之前的 `~/glibc-2.28/build`目录下 
$ cd /root/glibc-2.28/build 
$ ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin 
$ make 
$ make install   # 这一步要10分钟左右,需要耐心等待
# 查询
$ strings /lib64/libc.so.6 | grep GLIBC 
... 
GLIBC_2.22 GLIBC_2.23 GLIBC_2.24 GLIBC_2.25 GLIBC_2.26 GLIBC_2.27 GLIBC_2.28 GLIBC_PRIVATE 
...

继续安装

# 执行以下命令仍然报错
[root@032-cicd-prod ~]# npm install -g pnpm 
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node) 
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node) 
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)

# 安装以下包
yum update glibc glibc-devel libstdc++

升级 gcc 10.3

看来您已经正确安装了 Node.js,但依然遇到了 libstdc++ 版本的问题。您可以尝试以下步骤来解决这个问题:

  1. 下载并编译指定版本的 GCC:

    如果 devtoolset-9 不能满足您的需求,您可以手动下载并编译最新版本的 GCC,以确保获得所需的 libstdc++ 版本。

    首先,下载 GCC 源代码并解压:

    sh wget http://ftp.gnu.org/gnu/gcc/gcc-10.3.0/gcc-10.3.0.tar.gz tar -xzf gcc-10.3.0.tar.gz cd gcc-10.3.0 ./contrib/download_prerequisites

  2. 编译并安装 GCC:

    配置并编译 GCC:

    sh mkdir build && cd build ../configure --disable-multilib --enable-languages=c,c++ make -j$(nproc) sudo make install

  3. 创建符号链接:

    将新编译的 libstdc++.so.6 文件链接到系统库路径:

    sh sudo ln -sf /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6

    请确认实际路径,以防安装目录不同。

  4. 更新库缓存:

    更新动态链接库缓存:

    sh sudo ldconfig

  5. 检查 libstdc++ 版本:

    确认已安装的 libstdc++ 版本支持所需的 ABI 和 GLIBCXX:

    sh strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX strings /usr/lib64/libstdc++.so.6 | grep CXXABI

  6. 重新安装 pnpm:

    最后,尝试再次安装 pnpm:

    sh npm install -g pnpm

通过以上步骤,您应该能够解决 libstdc++ 版本的问题,并成功安装 pnpm。如果仍然遇到问题,请确保所有路径和符号链接都设置正确,并且已正确更新动态链接库缓存。

下载并

参考