在编译安装前要检查一下系统中的gcc编译器的版本如果版本过低在编译NodeJS时会报错,在升级gcc后要将老版本的动态库替换成新的动态库。之后就可以正常编译nodejs
gcc升级
下载gcc的源码包 wget http://gcc.skazkaforyou.com/releases/gcc-8.2.0/gcc-8.2.0.tar.gz
解压 tar -xf gcc-8.2.0.tar.gz
进入到目录gcc-8.2.0,运行:./contrib/download_prerequisites 这脚本会安装gcc需要依赖的包。
建立输出目录并到目录里:mkdir gcc-build-8.2.0;cd gcc-build-8.2.0;
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib。--enable-languages表示你要让你的gcc支持那些语言,--disable-multilib不生成编译为其他平台可执行代码的交叉编译器。--disable-checking生成的编译器在编译过程中不做额外检查,也可以使用--enable-checking=xxx来增加一些检查;
编译:make -j4 //选项 -j4 是多核编译
;注意此不编译比较耗时,在我的虚拟机上编译大概2个小时。这个时间看具体机器配置情况而定。
安装 make install
重启系统 reboot
查看 gcc 版本 gcc -v
gcc动态链接库替换成新版本
拷贝GCC中最新的libstdc++.so.6.0.25文件到 /usr/lib64 目录下
cp /usr/local/src/gcc-8.2.0/gcc-build-8.2.0/x86_64-pc-linux-gnc/libstdc++-v3/src/.libs/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6.0.25
删除之前的libstdc++.so.6
rm -f /usr/lib64/libstdc++.so.6
将libstdc++.so.6 连接到最新的libstdc++.so.6.0.25文件
ln -s /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6
编译NodeJS
下载node最新源码
cd /usr/local/src/
wget http://nodejs.org/dist/v11.9.0/node-v11.9.0.tar.gz
解压源码
tar zxvf node-v11.9.0.tar.gz
编译安装
cd node-v11.9.0
./configure --prefix=/usr/local/node/11.9.0
make -j4
make install
查看node的版本
node -v