GCC8.20版本的安装

GCC8.20版本的安装

因为要用到c++ std::byte这个类型,但是此类型在C++17标准里面定义,然后我看到我的GCC版本不高,于是打算升级到高版本的GCC

我的linux环境为centos7

要确认自己的gcc所支持的C++版本可以看安装的gcc的发行时间,如C++17 在2017年后发行的gcc版本一般都支持,还要就是使用man手册,man gcc 里面找到std 下面就有gcc支持的C++标准版本,直接按 / 搜索std可以很快找到。
在这里插入图片描述

安装gcc8.2:

使用wget下载

wget http://ftp.gnu.org/gnu/gcc/gcc-8.2.0/gcc-8.2.0.tar.gz

解压:

tar -zxvf gcc-8.2.0.tar.gz

然后cd进入文件夹

下载gcc需要的依赖 gcc安装包里面带有下载命令:

./contrib/download_prerequisites

创建并进入编译目录

mkdir build
cd build
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

编译:

make

时间可能比较长
然后
安装
make install

接下来是我在编译过程中遇到的几个问题:

checking LIBRARY_PATH variable... contains current directory
configure: error: 
*** LIBRARY_PATH shouldn't contain the current directory when
*** building gcc. Please change the environment variable
*** and run configure again.
make[2]: *** [configure-stage2-gcc] Error 1
删掉gcc源码,重新建立gcc后再执行 ./configure .....,或者
执行:make disclean和rm ./config.cache命令,我看着麻烦,
还是 rm -fr gcc最简单。
这里要提的就是,如果配置发生了更新,如果没有
清空上一次的结果,可能会遇上这个问题。

还有这样的一个问题:

./../gcc-aarch64-sve-acle-branch/gcc/hwint.h:62:5: error: #error "Unable to find a suitable type for HOST_WIDE_INT"
    #error "Unable to find a suitable type for HOST_WIDE_INT"

解决办法:去除CPLUS_INCLUDE_PATH设置

export CPLUS_INCLUDE_PATH=

最后还遇到了一个问题:

xg++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[3]: *** [Makefile:1110: insn-emit.o] Error 1
make[3]: Leaving directory ‘/home/gcc/gcc-8.2.0/build/gcc’
make[2]: *** [Makefile:4707: all-stage3-gcc] Error 2
make[2]: Leaving directory ‘/home/gcc/gcc-8.2.0/build’
make[1]: *** [Makefile:27173: stage3-bubble] Error 2
make[1]: Leaving directory ‘/home/gcc/gcc-8.2.0/build’
make: *** [Makefile:953: all] Error 2

查阅相关信息后,认为是虚拟机内存不足造成的。通过创建swap分区解决了这个问题,编译成功。
下面总结一下swap分区的创建和激活等操作:

# 创建分区路径
sudo mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s

swap0文件的路径在/var/cache/swap/下,编译完后, 如果不想要交换分区了, 可以删除。

删除交换分区的命令:

sudo swapoff /var/cache/swap/swap0
sudo rm /var/cache/swap/swap0

释放空间命令:

sudo swapoff -a
#详细的用法:swapoff --help
#查看当前内存使用情况:free -m
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值