node报错required by node

最近为了升级了最新的Node.js,遇到一系列坑

首先去node官网下载node:https://nodejs.org/en/download/releases/

选择你所需要安装的版本点download ,选择 linux-x64.tar.xz 为结尾的点击即可

这里我以v16.15.0版本为例:

node-v16.15.0-linux-x64.tar.xz
//解压
# tar -xvf node-v12.5.0-linux-x64.tar.xz

//换包路径
# mv node-v12.5.0-linux-x64 /usr/local/node

对 Node.js 16.15.0 解压并配置环境后,运行node -v时发现以下各种依赖问题required by node:

# node -v
node: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by node)

网上找了一些解决办法,顺便记录下来:

一、先解决第一行node: /lib64/libc.so.6: version `GLIBC_2.16' not found (required by node)的问题

首先,检查动态库:

# 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_PRIVATE

发现最高只有 GLIBC_2.12,所以这里需要下载最新gcc库:

 为什么下2.17的版本,  你看我报错那边是 2.16、2.17 、2.14 实际你下2.17版本里面包含了2.14和2.16版本了。所以把这一步干完就能解决前三行前置依赖报错啦

# wget https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz

 更多版本:https://ftp.gnu.org/gnu/glibc/

然后解压:

# tar -xvf glibc-2.17.tar.gz

然后编译安装 gcc

# cd glibc-2.17

# mkdir build

# cd build   

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

这是一个漫长的过程:

# make && make install

完事后重新查看版本GLIBC版本,成功更新到2.17

# 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

二、咱们来解决node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by node) 的问题

首先,还是检查动态库:

# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

发现最高只有 GLIBCXX_3.4.13,所以这里需要下载最新gcc库:

# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz

更多版本:Index of /software/gcc/releases/

然后解压:

# tar -zxvf gcc-8.3.0.tar.gz

然后编译安装 gcc

# cd gcc-8.3.0/ 

# ./contrib/download_prerequisites

# mkdir build

# cd build   

# ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

这是一个漫长的过程:

# make && make install

此项结束后看到一堆报错。。。。但翻阅资料后暂不理

执行如下命令,查找编译gcc时生成的最新动态库:

# find / -name "libstdc++.so*"

输出以下:

/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.13
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/32/libstdc++.so
/usr/local/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/usr/local/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 

注释:1、最后一行为最新动态库
2、/usr/local/gcc-8.3.0/是升级gcc时的输出目录。

将上面的最新动态库libstdc++.so.6.0.25地址全路径复制到/usr/lib64目录下:

# cp /usr/local/gcc-8.3.0/build/x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 /usr/lib64

1、切换目录至/usr/lib64;2、删除原来软链接;3、将默认库的软链接指向最新动态库

# cd /usr/lib64

# rm -rf libstdc++.so.6

# ln -s libstdc++.so.6.0.25 libstdc++.so.6

默认动态库升级完成。从新运行如下命令检查动态库:

# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBC_2.2.5
GLIBC_2.3
GLIBC_2.14
GLIBC_2.18
GLIBC_2.16
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

现在,动态库的版本已经到了GLIBCXX_3.4.25

再次运行node -v,发现升级完成!大功告成泪目

# node -v
v16.15.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>