安装 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++ 版本的问题。您可以尝试以下步骤来解决这个问题:
下载并编译指定版本的 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编译并安装 GCC:
配置并编译 GCC:
sh mkdir build && cd build ../configure --disable-multilib --enable-languages=c,c++ make -j$(nproc) sudo make install创建符号链接:
将新编译的
libstdc++.so.6文件链接到系统库路径:sh sudo ln -sf /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6请确认实际路径,以防安装目录不同。
更新库缓存:
更新动态链接库缓存:
sh sudo ldconfig检查
libstdc++版本:确认已安装的
libstdc++版本支持所需的 ABI 和 GLIBCXX:sh strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX strings /usr/lib64/libstdc++.so.6 | grep CXXABI重新安装 pnpm:
最后,尝试再次安装 pnpm:
sh npm install -g pnpm
通过以上步骤,您应该能够解决 libstdc++ 版本的问题,并成功安装 pnpm。如果仍然遇到问题,请确保所有路径和符号链接都设置正确,并且已正确更新动态链接库缓存。
下载并
评论