CentOS 7上升级/安装gcc

转载请注明文章出处:tlanyan.me/install-upg…c++

CentOS 7官方源带的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必需要升级现有版本或者安装高版本的gcc。git

问题的解决办法主要有两种:手动编译安装(也能够从其余机器拷贝或者网上下载),或从源安装。大多数状况下本人都不推荐从源码编译,由于过程当中常会出现各类依赖问题须要人工手动解决,费时(单核编译gcc至少一小时)且耗费精力,而且软件升级还要再来一次,至关的折腾。鉴于此下文介绍从源安装的方法。centos

红帽其实已经编译好了高版本的gcc,但未更新到base和epel这两个经常使用的源中,而是放在scl中。第一步即是安装sclbash

yum install -y centos-release-scl
复制代码

若是你以前用过grouplist/install等命令,应该知道gcc包含在Development Tools这个组中。那么scl中的gcc/g++软件包的前缀都是devtoolset,也就不难理解了。安装gcc 6版本的命令是:gitlab

yum install -y devtoolset-6-gcc devtoolset-6-gcc-c++
复制代码

devtoolset-6中的gcc版本为gcc 6,除此以外还有以下版本:spa

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

至于为何没有devtoolset-5,我也不清楚,估计是包含在devtoolset-4中了吧。值得说明的是这些软件包能够同时安装,不会相互覆盖和冲突,也不会覆盖系统的版本。便可以在系统中同时安装gcc 6, gcc 7, gcc 8等多个版本。rest

由于不会覆盖系统默认的gcc,使用这些软件的方法有四种:code

  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。使用相似的命令能够随时在多个gcc版本中切换。若是但愿长期使用高版本,可将此命令写入.bashrc等配置文件。rem

最后说一下,scl以及scl-rh源中的软件包都安装在/opt/rh/目录下,包含可执行文件、配置等。因此启用命令的路径是/opt/rh/xxx/enable,安装的服务重启命令则多是systemctl restart rh-xxx,须要加rh或scl前缀以区别其余源的包。若是你用过remi/gitlab等源,其行为方式也是相似的。get

参考

  1. www.softwarecollections.org/en/scls/rhs…
相关文章
相关标签/搜索