0

Centos7 下编译安装 node.js

Posted by 撒得一地 on 2017年7月17日 in 杂谈

最近有一台闲置的云服务器,便想装一下 nodejs 。官网上已经有集成编译好的二进制包,直接下载下来就能用。

不过想,估计自己编译安装也花不了多少时间,便开始倒腾安装,结果碰到了好几个问题。所以强烈建议新手直接使用官网已经编译好的二进制包 == ,因为不一样的搭建环境,可能遇到各类林林总总的问题。

下面附上编译安装的步骤:

官网地址:https://nodejs.org/en/download/,选择 source code 那列进行源码下载:

下载 nodejs 源码包

如果你选择下载 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

上一篇:

下一篇:

相关推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注

9 + 4 = ?

网站地图|XML地图

Copyright © 2015-2017 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.