Centos7 下编译安装 node.js
下一篇: 备份 密码: 123456
最近有一台闲置的云服务器,便想装一下 nodejs 。官网上已经有集成编译好的二进制包,直接下载下来就能用。
不过想,估计自己编译安装也花不了多少时间,便开始倒腾安装,结果碰到了好几个问题。所以强烈建议新手直接使用官网已经编译好的二进制包 == ,因为不一样的搭建环境,可能遇到各类林林总总的问题。
下面附上编译安装的步骤:
官网地址:https://nodejs.org/en/download/,选择 source code 那列进行源码下载:
如果你选择下载 Linux Binaies,下载下来的就是已经编译好的,可以直接使用,那么以下内容可以不看。如果你选择 source code 进行编译安装,那么可以接着往下看。
接下来开始下载安装:
下载 wget http://nodejs.org/dist/v6.11.1/node-v6.11.1.tar.gz 解压缩 tar -zxvf node-v6.11.1.tar.gz 进入目录 cd node-v6.11.1 ./configure --prefix=/usr/local/nodejs/
出现警告:WARNING: warnings were emitted in the configure phase
以为警告可以忽略,然后直接执行 make 命令:
make
不过 make 也报错,出现错误:
make[1]: *** [/usr/local/src/node-v6.11.1/out/Release/obj.target/v8_libplatform/deps/v8/src/libplatform/default-platform.o] Error 1 make[1]: Leaving directory `/usr/local/src/node-v6.11.1/out' make: *** [node] Error 2
查了下原因,原来是系统 gcc 版本太低,nodejs 源码编译要求gcc-c++版本最低为4.8,查看下 gcc 版本:
[root@jdu4e00u53f7 node-v6.11.1]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure –prefix=/usr –mandir=/usr/share/man –infodir=/usr/share/info –with-bugurl=http://bugzilla.redhat.com/bugzilla –enable-bootstrap –enable-shared –enable-threads=posix –enable-checking=release –with-system-zlib –enable-__cxa_atexit –disable-libunwind-exceptions –enable-gnu-unique-object –enable-languages=c,c++,objc,obj-c++,java,fortran,ada –enable-java-awt=gtk –disable-dssi –with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre –enable-libgcj-multifile –enable-java-maintainer-mode –with-ecj-jar=/usr/share/java/eclipse-ecj.jar –disable-libjava-multilib –with-ppl –with-cloog –with-tune=generic –with-arch_32=i686 –build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
我本地的 gcc-c++ 为 4.4.7 版本,无奈只能升级 gcc 到 4.8 版本以上。下面介绍 gcc 编译安装过程,安装前要先确保已经安装了 zip ,不然后面的步骤会报错。
安装zip yum install zip
编译安装GCC需要GMP、MPFR、MPC这三个库,下面先分别安装这个三个库(注:下面 gmp、mpfr、mpc 、gcc都安装在 /usr/local/ 目录下):
先安装 gmp [root@node01 local]# mkdir gmp [root@node01 local]# cd gmp [root@node01 gmp]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/gmp-4.3.2.tar.bz2 [root@node01 gmp]# tar jxvf gmp-4.3.2.tar.bz2 [root@node01 gmp]# cd gmp-4.3.2 [root@node01 gmp-4.3.2]# mkdir /usr/local/gcc [root@node01 gmp-4.3.2]# ./configure --prefix=/usr/local/gcc [root@node01 gmp-4.3.2]# make && make install
安装 mpfr [root@node01 local]# mkdir mpfr [root@node01 local]# cd mpfr/ [root@node01 mpfr]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/mpfr-2.4.2.tar.bz2 [root@node01 mpfr]# tar jxvf mpfr-2.4.2.tar.bz2 [root@node01 mpfr]# cd mpfr-2.4.2 [root@node01 mpfr-2.4.2]# ./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc/ [root@node01 mpfr-2.4.2]# make && make instal
安装 mpc [root@node01 local]# mkdir mpc [root@node01 local]# cd mpc [root@node01 mpc]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/infrastructure/mpc-0.8.1.tar.gz [root@node01 mpc]# tar zxvf mpc-0.8.1.tar.gz [root@node01 mpc]# cd mpc-0.8.1 [root@node01 mpc-0.8.1]# ./configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc [root@node01 mpc-0.8.1]# make && make install
最后安装gcc [root@node01 local]# mkdir gcc [root@node01 gcc]# cd gcc [root@node01 gcc]# wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.gz [root@node01 gcc]# tar zxvf gcc-5.2.0.tar.gz [root@node01 gcc]# cd gcc-5.2.0 [root@node01 gcc-5.2.0]# ./configure -prefix=/usr/local/gcc -with-gmp=/usr/local/gcc --with-mpfr=/usr/local/gcc -with-mpc=/usr/local/gcc -disable-multilib [root@node01 gcc-5.2.0]# make && make install
make时出错:
configure: error: cannot compute suffix of object files: cannot compile See `config.log' for more details. make[2]: *** [configure-stage1-target-libgcc] Error 1 make[2]: Leaving directory `/usr/local/src/gcc-5.2.0' make[1]: *** [stage1-bubble] Error 2 make[1]: Leaving directory `/usr/local/src/gcc-5.2.0' make: *** [all] Error 2
解决方法:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gcc/lib/
然后重新 make ,成功编译,接着执行 make install,然后成功安装 gcc,如下 :
make && make install
然后查看下刚安装好的 gcc 的版本号:
[root@jdu4e00u53f7 gcc-5.2.0]# /usr/local/gcc/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/usr/local/gcc/bin/gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure -prefix=/usr/local/gcc -with-gmp=/usr/local/gcc –with-mpfr=/usr/local/gcc -with-mpc=/usr/local/gcc -disable-multilib
Thread model: posix
gcc version 5.2.0 (GCC)
gcc虽然安装成功后,还要设置软连接,把旧版的 gcc 指到最新安装的版本下:
[root@node01 gcc-5.2.0]# ln -sb /usr/local/gcc/bin/gcc /usr/bin/gcc [root@node01 gcc-5.2.0]# ln -sb /usr/local/gcc/bin/g++ /usr/bin/g++
重新返回到 node.js 安装,重新 configure:
[root@jdu4e00u53f7 node-v6.11.1]# ./configure --prefix=/usr/local/nodejs/
这次没出现错误 ,接着执行 make 和 make install :
make && make install
最后,成功安装完成。
参考
https://my.oschina.net/zchking/blog/97704
http://blog.sciencenet.cn/blog-830496-699204.html
http://www.runoob.com/nodejs/nodejs-install-setup.html
http://piro-shiki.dreamlog.jp/archives/45861883.html
下一篇: 备份 密码: 123456