avatar
@bangbang93

CentOS6上正常使用node 4.0.0以上的node-gyp

10/9/2015, 7:57:52 PM

node4.0.0开始升级了V8引擎,所以编译安装时要求gcc 4.8以上的版本。但是CentOS6内置的GCC版本只有4.4.7,并不支持编译所需的C++11标准,二进制安装可以正常使用node,但是在安装需要编译的modules时就会报

../node_modules/nan/nan.h:41:3: error: #error This version of node/NAN/v8 requires a C++11 compiler

所以只好去升级gcc

RedHat发布过相应的升级包,叫做Devtoolset,有三个版本
devtoolset-1是gcc 4.7
devtoolset-2是gcc 4.8
devtoolset-3是gcc 4.9

我一开始安装的是devtoolset-2,编译时报/tmp/cclYyZDq.s:282: Error: expecting string instruction after `rep'

后来重新安装devtoolset-3,就能正常通过编译使用了

安装devtoolset-3

可以用rpm安装相应的repo

rpm -ivh https://www.softwarecollections.org/en/scls/rhscl/devtoolset-3/epel-6-x86_64/download/rhscl-devtoolset-3-epel-6-x86_64.noarch.rpm

yum install devtoolset-3-gcc-c++
#devtoolset-3-gcc会被作为依赖安装

安装完毕后使用命令

scl enable devtoolset-3 bash

临时覆盖系统原先的gcc引用

若想永久覆盖,可在.bashrc中添加

source /opt/rh/devtoolset-3/enable

然后再继续npm install,就能够正常安装以前无法编译通过的module了