** 折腾了一天,光编译GCC 5.2.0 就好几个小时。 步骤繁琐,拿来分享,帮助需要在red hat 上运行node的需求。
1 为什么要编译node 用yum 升级Gcc 最高版本是4.4.x ,我的项目依赖自己的rcib模块,运行 npm install rcib 编译报错,需要一个支持C++11 的GCC。 v8使用C++11,因此直接二进制安装其库文件无法被低版本的GCC使用,安装任何C++模块都会有此问题。
2 详细步骤
1)wget http://ftp.gnu.org/gnu/binutils/
先编译安装binutils,建议使用2.24的版本。
安装完毕 运行 ld -v gold-v bfd-v ld.gold -v ld.bfd -v 测试安装是否成功, 都得通过哦,否则编译node报错。
注意
要在/usr/bin 下建立软连接
不建议直接安装到 /usr/bin/
如果存在老版本,mv 改名 然后再建立软连接
2)wget http://gcc.parentingamerica.com/releases/gcc-5.2.0/gcc-5.2.0.tar.gz 下载GCC
在编译GCC前 需要 顺序 下载编译 GMP4.2+, MPFR 2.4.0+ and MPC 0.8.0+
然后编译GCC ,我给出一个参考的参数设定
./configure -prefix=/usr/local/gcc -enable-threads=posix -disable-checking -enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gcc/gmp-4.3.2 --with-mpfr=/usr/local/gcc/mpfr-2.4.2 --with-mpc=/usr/local/gcc/mpc-0.8.1
3) 编译GCC 非常漫长,我在100G+ 内存,16核心CPU 好像编了3个多小时。
4) 运行如下指令卸载老版本
yum remove gcc
yum remove gcc-c++
5) 建立gcc 和 g++ 的软连接。运行 gcc -v g++ -v cc -v看版本号 已经为 5.2.0**
cc为gcc的软连接,不建立这个链接 编译node报错
6)接下来编译node
先 LD_LIBRARY_PATH=/usr/local/gcc/lib64 一下,指示GCC使用新版库
然后按照流程编译吧
后记:
使用低版本的GCC 编译出一个高版本GCC,仔细想想这事儿,好比在一个上帝的基础上,编译出了上帝的儿子!