总字数 520
预计阅读时间 2 分钟
编译新版nodejs的时候提示要求使用新版gcc
但是使用yum安装的gcc, 最高版本只能获得4.8.5
所以只好自己编译安装gcc
编译安装gcc
必须首先安装有低版本的gcc和g++, 因为编译gcc的源码也是需要使用gcc的
如果没有的话先用yum安装yum install -y gcc gcc-c++
源码包解压
1 | xz -d gcc-8.2.0.tar.xz |
编译
1 | # 下载、配置、安装需要的依赖库 |
编译的过程时间比较长
编译完成之后, 执行
1 | # 删除低版本的gcc |
如果此时还是找不到新安装的gcc, 可以执行一下source /etc/profile
常见问题与解决方案
安装依赖库时缺少bzip2
解决办法:yum install -y bzip2
g++: internal compiler error: Killed
编译进程被终止
这种情况一般是内存不足的问题
可以临时创建交换分区
1 | dd if=/dev/zero of=/swapfile bs=64M count=16 |
编译完成之后, 可以删除掉这个交换分区文件
1 | swapoff /swapfile |
编译安装nodejs
nodejs源码包下载
执行tar -zxvf node-v11.7.0.tar.gz
解压
编译
1 | cd node-v11.7.0 |
常见问题与解决方案
GLIBCXX_3.4.20 not found
首先执行1
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
发现少了GLIBCXX_3.4.20,解决方法是升级libstdc++1
2
3
4
5
6
7
8
9yum provides libstdc++.so.6
yum install libstdc++-4.8.5-11.el7.i686
# 从lib64目录下拷贝(等于或高于6.0.20即可)
cp /usr/local/lib64/libstdc++.so.6.0.25 /usr/lib64/
cd /usr/lib64
# 删除现有的软链接
rm libstdc++.so.6
# 创建软链接
ln -s libstdc++.so.6.0.25 libstdc++.so.6cc命令未找到
这里只需要临时添加环境变量CC指定为gcc即可, 也就是export CC=gcc