CentOS7如何升级/安装gcc?

CentOS 7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。解决办法有两种:手动编译(也可以从其他机器拷贝或者网上下载),或从源安装。

这篇笔记波波主要分享从源安装高版本gcc的方法:

1、首先安装scl。

  1. yum install -y centos-release-scl

如果你之前用过grouplist/install等命令,应该知道gcc包含在Development Tools这个组中。scl中的gcc/g++软件包的前缀都是devtoolset。

2、安装其他版本gcc。

举例:包含gcc 6的软件包是devtoolset-6,其安装命令如下。

  1. yum install -y devtoolset-6-gcc devtoolset-6-gcc-c++

3、其他gcc版本。

  • devtoolset-3: gcc 4.9
  • devtoolset-4: gcc 5
  • devtoolset-6: gcc 6
  • devtoolset-7: gcc 7
  • devtoolset-8: gcc 8

值得说明的是这些软件包可以同时安装,不会相互覆盖和冲突,也不会覆盖系统的版本。即可以在系统中可同时存在gcc 6, gcc 7, gcc 8等多个版本。

使用这些软件的方法有四种:

  1. 使用绝对路径;
  2. 添加可执行文件路径到PATH环境变量;
  3. 使用官方推荐的加载命令:scl enable devtoolset-x bash, x为要启用的版本;
  4. 执行安装软件自带的脚本: source /opt/rh/devtoolset-x/enable,x为要启用的版本。

 

实践推荐使用最后两种方式。例如启用gcc 6: source /opt/rh/devtoolset-6/enable,接着输入gcc -v查看版本已经变成gcc 6.3.1。如果希望长期使用某个高版本,可将此命令写入.bashrc等配置文件。

scl以及scl-rh源中的软件包都安装在/opt/rh/目录下,包含可执行文件、配置等。启用命令的路径是/opt/rh/xxx/enable,安装的服务重启命令则是systemctl restart rh-xxx,需要加rh或scl前缀以区别其他源的包。如果你用过remi/gitlab等源,其行为方式也是类似的。

 

波波
你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!