在CentOS系统中,GCC(GNU Compiler Collection)是用于编译C、C++等编程语言的编译器套件,默认情况下,CentOS 7自带的GCC版本较老,可能无法满足某些软件或项目的需求,因此需要升级到更高版本的GCC,本文将详细介绍如何在CentOS上通过SCL(Software Collections)仓库和Devtoolset来便捷地升级GCC,并附上相关FAQ解答。
一、升级步骤详解
1. 安装SCL仓库
需要安装SCL仓库,这是Red Hat提供的一个用于安装和管理不同版本软件集合的工具,执行以下命令:
sudo yum install centosreleasescl
2. 安装所需版本的GCC
根据需要选择要安装的GCC版本,若要安装GCC 9,执行以下命令:
sudo yum install devtoolset9gcc devtoolset9gccc++
若要安装其他版本,只需更改命令中的版本号即可,如devtoolset8、devtoolset10等。
3. 启用新版本的GCC
安装完成后,使用scl enaBLe
命令启用新版本的GCC,启用GCC 9:
scl enable devtoolset9 bash
系统会临时切换到新版本的GCC,可以通过gcc version
验证当前GCC版本。
4. 使新版本的GCC永久生效
为了在重启系统后仍然保持新版本的GCC为默认版本,可以将启用命令添加到用户的shell配置文件中(如~/.bashrc
),编辑~/.bashrc
文件,添加以下行:
source /opt/rh/devtoolset9/enable
保存并重新加载配置:
source ~/.bashrc
5. 验证升级结果
再次运行gcc version
以确保GCC版本已成功升级。
二、常见问题与解答(FAQ)
**问题1:在执行yum install devtoolset8gcc
时报错,说找不到对应的包。
解答:
这个问题通常是由于YUM源配置不正确导致的,可以尝试修改或添加新的YUM源来解决,使用阿里云的镜像源:
1、备份原有的YUM源配置文件:
sudo mv /etc/yum.repos.d/CentOSBase.repo /etc/yum.repos.d/CentOSBase.repo.bak
2、创建新的YUM源配置文件,内容如下:
[base] name=CentOS$releasever Base mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPMGPGKEYCentOS7 [updates] name=CentOS$releasever Updates mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPMGPGKEYCentOS7 [extras] name=CentOS$releasever Extras mirrors.aliyun.com baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPMGPGKEYCentOS7
3、清除YUM缓存并更新:
sudo yum clean all sudo yum makecache
4、重新尝试安装devtoolset:
sudo yum install devtoolset8gcc
问题2:安装成功后重启再次执行gcc v
发现还是旧的版本。
解答:
这是因为scl enable devtoolsetX bash
命令只是临时使新版本的GCC生效,重启后会恢复原系统GCC版本,为了使新版本的GCC永久生效,需要按照上述步骤4中的说明,将启用命令添加到用户的shell配置文件中,具体操作如下:
1、编辑~/.bashrc
文件:
nano ~/.bashrc
2、在文件末尾添加以下行:
source /opt/rh/devtoolsetX/enable
其中X
替换为你安装的devtoolset版本号,如9
。
3、保存并退出编辑器,然后重新加载配置:
source ~/.bashrc
4、再次验证GCC版本:
gcc version
通过以上步骤,可以在CentOS系统上便捷地升级GCC,并确保新版本在重启后仍然保持默认状态,对于常见的安装问题,也提供了相应的解决方案,帮助用户顺利完成GCC的升级过程。