技术分享| gcc版本升级到5.2
一、介绍
GCC(GNU Compiler Collection)是一套广泛使用的开源编译器集合,用于编译多种编程语言,包括C、C++、Objective-C、Fortran等。GCC 的不同版本提供了许多新功能、改进和修复,其中包括从 GCC 4.8.5 升级到 GCC 5.2.0 所带来的一些变化。
GCC 5.2.0 是 GCC 5 系列的一个版本,相对于 GCC 4.8.5,它引入了一些重要的改进和功能。以下是一些可能的变化和改进:
- C++14 支持:GCC 5.2.0 开始增加对 C++14 标准的支持。这意味着可以使用 C++14 中引入的新特性和语法,如泛型 Lambda 表达式、二进制字面量、变长模板参数包等。
- 新的优化和性能改进:GCC 5.2.0 引入了一些新的优化技术和性能改进,可以提高生成的代码的执行效率。这些改进可能包括新的优化策略、针对特定处理器架构的优化、更好的内存管理等。
- C11 支持:GCC 5.2.0 开始增加对 C11 标准的支持。C11 是 C 语言的一个新版本,引入了一些新的特性和改进,如线程支持、原子操作、泛型选择表达式等。
- 代码质量和警告改进:GCC 5.2.0 可能会引入一些新的代码质量改进和警告机制,帮助开发人员发现潜在的问题和错误。这些改进可能包括更准确的警告、新的代码分析技术等。
- 新的语言扩展和特性:GCC 5.2.0 可能引入一些新的语言扩展和特性,以提供更丰富的编程功能和选项。这些扩展可能针对特定的编程语言,如 C、C++、Fortran 等。
二、环境准备
当前版本:gcc version 4.8.5 (GCC)
升级版本:gcc version 5.2.0 (GCC)
## 下载源码包
[root@localhost ~]# yum -y install bzip2 gcc* gdb wget
[root@localhost ~]# wget http://mirrors.concertpass.com/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2
## 无网情况下手动下载上传到服务器
三、安装依赖
## 解压
[root@localhost ~]# tar -jxvf gcc-5.2.0.tar.bz2
[root@localhost ~]# cd gcc-5.2.0
## 安装依赖
[root@localhost gcc-5.2.0]# ./contrib/download_prerequisites
无网情况下
1、手动下载download_prerequisites包含的依赖包到gcc-5.2.0目录下
2、修改download_prerequisites文件,把wget相关的注释掉,在执行./contrib/download_prerequisites
四、编译安装
1、配置相关参数
[root@localhost gcc-5.2.0]# mkdir gcc-build-5.2.0
[root@localhost gcc-build-5.2.0]# cd gcc-build-5.2.0
[root@localhost gcc-build-5.2.0]# ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
2、开始编译,如果是多核服务器最好加上 -j4参数,4代表安装的服务器cpu核数,这里时间较长耐心等待
[root@localhost gcc-build-5.2.0]# make -j4
3、开始安装
[root@localhost gcc-build-5.2.0]# make install
默认库文件存放位置:/usr/local/lib64
默认bin文件存放位置: /usr/local/bin
4、查看最新版本的gcc,如果版本是5.2.0那么就安装成功了,如果没有成功此时可以看下g++ -v ,可以看到已经是5.2.0了
[root@localhost gcc-build-5.2.0]# gcc -v
[root@localhost gcc-build-5.2.0]# g++ -v
如果发现gcc还是老版本,g++是新版本,那么需要重启服务器
[root@localhost gcc-build-5.2.0]# reboot
5、再次查看gcc版本
[root@localhost ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
Thread model: posix
gcc version 5.2.0 (GCC)