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了