上一篇文章中讲了prerequisites,CentOS自带的gcc版本太低了,需要升级到4.7以上版本才能编译node,否则make时候会出错
http://blog.csdn.net/Emptyset110/article/details/50128115
Step 1. 去这里下载源码,解压
https://nodejs.org/en/download/
# wget https://nodejs.org/dist/v5.1.0/node-v5.1.0.tar.gz
# tar xzvf node-v5.1.0.tar.gz
# cd node-v5.1.0
Step 2. 编译,安装
./configure
make -j4
make install
看上去一切都很顺利
Step 3. /usr/lib64/libstdc++.so.6: version "GLIBCXX_3.4.20" not found
在运行node -v
时候出现了标题所示的错误
运行命令检查动态库
# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
发现其中并没有包含3.4.13以上的版本。而我们用gcc4.9.0编译的node是需要3.4.15和3.4.20的。
搜索安装gcc 4.9.0时候的libstdc++.so.6
# find / -name "libstdc++.so.*"
/home/Wen/gcc-4.9.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20
/home/Wen/gcc-4.9.0/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/Wen/gcc-4.9.0/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20
/home/Wen/gcc-4.9.0/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/home/Wen/gcc-4.9.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20
/home/Wen/gcc-4.9.0/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
我检查了其中一个动态库
strings /home/Wen/gcc-4.9.0/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/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
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.3.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
发现它包含我要的GLIBCXX_3.4.20
和GLIBCXX_3.4.14
# cp /home/Wen/gcc-4.9.0/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 /usr/lib64/
于是我把这个文件复制到/usr/lib64
下覆盖掉原来的文件即可。
检查node版本
[root@DataWorks node-v5.1.0]# node --version
v5.1.0