编译安装GCC 7.1.0

来源:互联网 发布:linux 强制复制文件夹 编辑:程序博客网 时间:2024/06/05 04:04

简介

  主要原因:GCC 7.1发布,完全支持C++17。

GCC 7.1 Released with Full C++17 Support
  GCC 7.1中的C++ Front End提供了对当前C++17草案的支持,所支持的特性包括constexpr类模板参数推导(template argument deduction)、自动模板参数和结构化绑定等。GCC 7.1同时支持-std=c++1z和-std=gnu++1z编译器标识。在C++的状态页面中,列出了C++ Front End中的所有新特性。正如InfoQ在前期所报道的,ISO C++委员会已于近期完成了对C++17的定义工作,只待得到组织中各国家机构的批准。
  GCC 7还对优化器进行了改进,其中包括一些新的过程内和过程间优化,例如:
  循环切分(Loop splitting),编译器选项为-fsplit-loops。在一些循环中,包含对一部分代码永真而对其余代码永假的条件,该优化选项适用于这样的循环。
  值范围(Value range)和按位常量传播(Constant Propagation),编译器选项分别为-fipa-vrp和-fipa-bit-cp。它们分别用于在调用关系图中传播变量所属范围的知识,以及变量中值为零的比特位的位置信息。
  代码提升(Code hoisting),编译器选项为-fcode-hoisting。一个函数可能存在多个尽早退出的执行路径,该选项通过在所有这些路径上对表达式求值,改进了部分冗余消除(partial redundancy elimination)过程。
  域外地址纠错(Out-of-scope address sanitization),编译器选项为-fsanitize-address-use-after-scope。用于纠错在定义范围之外的地址上使用的变量。

编译安装

  首先,我们要去官网下载最新的GCC源码:点我下载
  

wget http://gcc.skazkaforyou.com/releases/gcc-7.1.0/gcc-7.1.0.tar.gz

  注意:不用删除旧版本的GCC,(⊙o⊙)…,不然你怎么编译……
  下载好了就解压吧~
  

tar -xf gcc-7.1.0.tar.gz

  解压好了之后,就进入目录咯~cd gcc-7.1.0
  之后,执行脚本./contrib/download_prerequisites,这个脚本会帮我们下载、配置、安装需要的依赖库。
  建立编译输出目录mkdir gcc-build-7.1.0,进入目录cd gcc-build-7.1.0
  ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib。其中,--enable-languages表示你要让你的gcc支持那些语言,--disable-multilib不生成编译为其他平台可执行代码的交叉编译器。–disable-checking生成的编译器在编译过程中不做额外检查,也可以使用--enable-checking=xxx来增加一些检查;
  编译:make,这个编译要好久,我编译了两个小时……
  编译完成之后,我们需要把原来的GCC卸载,换成7.1.0版本的。
  

sudo apt-get remove gcc gcc-5 #gcc-*的都要卸载了sudo apt-get remove g++ g++-5 #g++-*的都要卸载了

  卸载完成,就可以我们的安装大计了。
  安装:sudo make install
  这里写图片描述
  

附录

  • linux下安装或升级GCC4.8,以支持C++11标准