node 版本升级还需谨慎

给 2 年前的一台机子做 node 升级(4.4 to 8.11),结果报了如下错。

1
2
3
4
5
[root@iZ23o1c307rZ ~]# node -v
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.10' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.3' not found (required by node)
node: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by node)

原因该 Node 缺少某些依赖库,然后这些库是系统自带(开发根本不涉足这些玩意儿,我不会升级安装这些 lib)

关键,问运维,也不造,呵呵哒。

所以如果服务器需要更新 node 版本,请先确定可行性

但不能止步不前,还是能吸收一些知识点

libstdc++

注意到上例的错误,都提到了 libstdc++,那是什么呢?

什么是 libstdc++

一个符合 GUN 规范标准的 C++库

为何要用 libstdc++

GUN(Gun compiler collection,也可叫做 gcc、g++)编译器,其被应用于 libstdc++。
很简单,Node 底层是 C 写的,当然需要这类库的支持

出现如上错误,如何处理?

可参考

  1. 下载 gcc source
  2. make gcc
1
2
3
4
5
6
7
8
get gcc sources
extract into gccsrcdir
mkdir gccbuilddir
cd gccbuilddir
gccsrcdir/configure --prefix=destdir --other-opts...
make
make check
make install

不同 Node 适合哪些 linux 的系统

翻阅 Node doc,暂时没发现对系统有什么明显的说明,对于这个错误只是系统级别上缺少依赖包,说白了就是系统太老了

不过还可以参考
不过还可以参考 nodesource distributions

参考

https://blog.csdn.net/haibosdu/article/details/77094833
`GLIBCXX_3.4.10’ not found
https://askubuntu.com/questions/575505/glibcxx-3-4-20-not-found-how-to-fix-this-error

【长按关注】看看↓↓↓?
Eminoda wechat
【前端雨爸】分享前端技术实践,持续输出前端技术文章
欢迎留言,评论交流,一起讨论前端问题
📢 因为是开源博客,为避免 Gitalk授权 带来的 安全风险,也可访问