由于安装nodejs时,需要使用编译源码的gcc版本比系统自带的高,因此需要重新安装高版本的gcc。
1、下载源码包
从官网上下载源码包:https://gcc.gnu.org/
我下载的是目前最新版本的7.2.0的:gcc-7.2.0.tar.gz
2、解压到当前目录
tar -xvf gcc-7.2.0.tar.gz
得到 gcc-7.2.0
3、下载依赖类库
进入 gcc-7.2.0,执行命令
./contrib/download_prerequisites
该命令会下载gcc所需要的一些依赖文件,在执行该过程时,碰到了一些问题,参考附录一。
4、建立编译输出目录
mkdir gcc-build-7.2.0
5、生成makefile
进入 gcc-build-7.2.0
执行以下命令:
../gcc-7.2.0/configure --enable-checking-release --enable-language=c,c++ --disable-multilib
6、编译
make -j4
7、安装
安装需要有root权限,但不需要切换到root帐号,因此需要使用sudo命令。
sudo make install
8、确认当前gcc版本
gcc -v
附录一:下载安装依赖
在初次使用自动下载依赖时,由于网络问题,许久时间都下载不下来,因此尝试过一些其他的方法,下面将尝试过的不可行的方法以及找到的尚未尝试过的方法罗列出来。
错误方式一:手动下载和安装这几个类库
根据上述的安装过程我们知道使用下面这个命令:
./contrib/download_prerequisites
可以下载到依赖包,那么这个文件中肯定罗列出来了需要下载的包,我们只需要根据这个列表去寻找到相应的包并下载安装即可。
但实际上这会导致一个问题,即gcc在编译时会去查找这些依赖,但是由于是自己手动安装的,gcc无法找到,就会出错。
错误方式二:使用 --with指定依赖的库文件
通过使用 with 命令指定依赖类库的方式进行安装:
./configure --with-gmp-include=/usr/local/include --with-gmp-lib=/usr/local ...
通过这种方式也没有成功,当然,此处无法确定是这种方式不行,还是我写的路径不对。
存疑方式三:下载依赖类库之后解压至gcc源码包
这种方式还没有测试过,此处汇总记录一下,实际上顺着这个思路来解决问题应该是可行的,只不过具体的细节不确定是否可行。
实际上通过阅读 download_prerequisites 文件可以解决该问题的,其中肯定是包含对于下载的文件放在哪里,或者是解压之后放在哪里,文件名的命名规则是怎么样的。
tar -xjf gmp-6.1.2.tar.bz2 mv gmp-6.1.2 gcc-7.2.0/gmp