编译安装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标准
- 编译安装GCC 7.1.0
- ubuntu10.04编译安装gcc 4.7.0
- centos 源码编译安装gcc 4.7.0
- CentOS 6.4 编译安装 gcc-4.8.0
- Linux编译安装GCC-4.9.0
- Linux编译安装GCC-4.9.0
- CentOS 6.4 编译安装 gcc-4.8.0
- CentOS 6.4 编译安装 gcc-4.8.0
- CentOS 6.4 编译安装 gcc-4.8.0
- Linux编译安装GCC-4.9.0
- Linux编译安装GCC-4.9.0
- Linux编译安装GCC-5.1.0
- Linux编译安装GCC-4.9.0
- CentOS下编译安装gcc 4.9.0
- gcc 5.2.0 编译安装笔记-20151110
- 源码编译安装gcc-5.3.0
- ubuntu10.04 编译安装gcc-5.3.0
- gcc-4.9.0手工编译安装
- linux下安装qt
- J2V8 -- 开始使用J2V8
- CSS的四种引入方式
- 实用网址收集
- Java 集合系列15之 Set架构
- 编译安装GCC 7.1.0
- 大话数据结构 code 第七章 09拓扑排序_TopologicalSort
- 封装可展开和收缩的View
- POJ
- HttpClient实战
- android动画详解
- short s = 1;s = s+1;和short s = 1; s+=1;的区别
- Q
- IaaS,PaaS,SaaS 的区别