CentOS 升级 gcc 版本
1. 安装步骤
CentOS7 默认的 gcc 版本是4.8,有时候需要更高版本,这里介绍一下如何将 gcc 版本升级到 8.3.1
-
安装 centos-release-scl - yum install centos-release-scl
复制代码 -
安装devtoolset,注意,如果想安装 9.* 版本的,就改成 devtoolset-9-gcc,以此类推 - yum install devtoolset-8-gcc*
复制代码 -
激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本 - scl enable devtoolset-8 bash
复制代码 -
查看 gcc 版本
2. FAQ
2.1 在执行yum install devtoolset-8-gcc*的时候报错,说找不到对应的包
解决方案:
安装完成后在 /etc/yum.repos.d 目录下会出现 CentOS-SCLo-scl.repo 和 CentOS-SCLo-scl-rh.repo 两个文件,安装后源默认启用,问题就在这两个文件上。
-
修改CentOS-SCLo-scl.repo文件 - vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
复制代码 -
修改此部分的 baseurl - [centos-sclo-sclo]
- name=CentOS-7 - SCLo sclo
- baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/sclo/
- # mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
- gpgcheck=0
- enabled=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
复制代码 -
修改CentOS-SCLo-scl-rh.repo - vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
复制代码 -
修改此部分的 baseurl - [centos-sclo-rh]
- name=CentOS-7 - SCLo rh
- baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
- # mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
- gpgcheck=0
- enabled=1
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo
复制代码 -
刷新缓存 - yum repolist
- yum clean all
- yum makecache
复制代码
2.2 安装成功后重启再次执行gcc -v发现还是旧的版本
这条scl enable devtoolset-8 bash激活命令只对本次会话有效,重启会话后还是会变回原来的4.8.5版本,要想随意切换可按如下操作。
首先,安装的devtoolset是在 /opt/rh 目录下的
每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,只需要执行: 所以想要切换某个版本只需要执行: - source /opt/rh/devtoolset-8/enable
复制代码解决方案:
-
方案一:可以将对应版本的切换命令写个shell文件放在配了环境变量的目录下,需要时随时切换,或者开机自启
-
方案二:直接替换旧的gcc
旧的gcc是运行的 /usr/bin/gcc,所以将该目录下的gcc/g++替换为刚安装的新版本gcc软连接,免得每次enable - mv /usr/bin/gcc /usr/bin/gcc-4.8.5
- ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
- mv /usr/bin/g++ /usr/bin/g++-4.8.5
- ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
- gcc --version
- g++ --version
复制代码
|