linux centos7 升级gcc版本 使用 yum centos-release-scl devtoolset-8-gcc* 非源码编译

目录

第一步: 安装centos-release-scl

第二步: 安装devtoolset

第三步: 激活对应的devtoolset

第四步: 查看版本

切换gcc版本

直接替换旧的gcc


Centos 7默认gcc版本为4.8,有时需要更高版本的,这里以升级至8.3.1版本为例,分别执行下面三条命令即可,无需手动下载源码编译

第一步: 安装centos-release-scl

安装centos-release-scl

sudo yum install centos-release-scl

第二步: 安装devtoolset

注意事项,如果想安装7.版本的,就改成devtoolset-7-gcc,以此类推

sudo yum install devtoolset-8-gcc*

第三步: 激活对应的devtoolset

所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本

scl enable devtoolset-8 bash

第四步: 查看版本

大功告成,查看一下gcc版本

gcc -v
显示为 gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)

注意事项:gcc如果没有切换只对本次会话有效

切换gcc版本

补充: 这条激活命令只对本次会话有效,重启会话后还是会变回原来的4.8.5版本,要想随意切换可按如下操作。

首先,安装的devtoolset是在 /opt/sh 目录下的,如图

每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,只需要执行

source ./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

<think>好的,我现在要解决用户提出的问题:在使用yum安装devtoolset-7-gccdevtoolset-7-gcc-c++时遇到下载失败的情况。用户需要找到解决方案。 首先,我需要回忆一下关于CentOS/RHEL系统中devtoolset的相关知识。devtoolset是Software Collections(SCL)的一部分,允许用户安装较新版本的开发工具而不影响系统默认版本。用户提到的devtoolset-7对应的是GCC 7.x版本,可能在某些较旧的系统版本中已经不再被官方仓库支持。 接下来,我需要考虑可能的原因。用户下载失败可能有几个原因:仓库未正确配置、软件包已被移除或迁移、网络问题,或者仓库缓存过期。根据用户提供的引用内容,特别是引用[3]中提到在CentOS 7.9中遇到devtoolset-10的安装问题,说明某些旧版本devtoolset可能在新系统中不可用。类似地,devtoolset-7可能已经被归档或移动到其他仓库。 查阅用户提供的引用,特别是引用[1]、[4]中提到使用copr仓库或特定.repo文件来添加仓库源。例如,用户可能没有正确配置包含devtoolset-7的仓库。CentOS官方可能已经将旧版的devtoolset移到vault仓库,或者需要第三方仓库如EPEL或SCL的官方源。 此外,引用[3]提到用户无法找到devtoolset-10的相关包,可能需要启用正确的仓库。同样,对于devtoolset-7,可能需要启用CentOS SCL仓库或者vault仓库。例如,CentOS 7默认的仓库可能已经不包含devtoolset-7,需要手动启用SCL仓库。 解决方案可能包括以下几个步骤: 1. 检查并启用正确的仓库,如SCL仓库或EPEL。 2. 如果官方仓库不再提供,可能需要配置存档仓库(vault.centos.org)。 3. 清理yum缓存并重新生成,确保元数据是最新的。 4. 如果以上方法无效,考虑手动下载rpm包进行安装。 5. 作为替代方案,升级到更高版本devtoolset,如devtoolset-8或更高,如果兼容的话。 需要验证这些步骤的正确性,例如如何启用SCL仓库,或者如何配置vault源。例如,CentOS SCL仓库通常可以通过安装centos-release-scl包来启用。用户可能没有安装这个包,导致无法找到devtoolset-7的包。 另外,引用[4]中提到安装devtoolset-8时的问题,用户可能通过添加特定的copr仓库来解决。类似地,对于devtoolset-7,可能需要寻找对应的第三方仓库或者使用存档。 如果用户尝试了上述方法仍然无法安装,可能需要手动下载rpm包并安装依赖。但这种方法较为复杂,容易遇到依赖问题。 总结可能的解决步骤: - 确认系统版本和已启用的仓库。 - 安装必要的仓库配置,如centos-release-scl- 清理缓存并重新安装。 - 如果官方仓库不可用,使用vault仓库。 - 考虑升级到更高版本devtoolset。</think>### 分步解决方案:解决 `devtoolset-7-gcc` 安装失败问题 #### 1. **检查仓库配置** 首先确认系统是否已启用包含 `devtoolset-7` 的官方仓库(如 **Software Collections (SCL)**)。 运行以下命令安装基础仓库支持: ```bash yum install -y centos-release-scl ``` #### 2. **添加备用仓库(若官方仓库失效)** 如果官方仓库已移除 `devtoolset-7`,需手动配置 **Vault 仓库**(存放历史版本软件包)。 编辑仓库文件: ```bash vi /etc/yum.repos.d/CentOS-Vault.repo ``` 在文件中找到对应 CentOS 7 版本的仓库配置(如 `7.9.2009`),将 `enabled=0` 改为 `enabled=1`。示例: ```ini [C7.9.2009-base] name=CentOS-7.9.2009 - Base baseurl=http://vault.centos.org/7.9.2009/os/$basearch/ enabled=1 # 修改此处 ``` #### 3. **清理并更新 Yum 缓存** ```bash yum clean all yum makecache ``` #### 4. **尝试重新安装** ```bash yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++ ``` #### 5. **手动下载 RPM 包(若仓库仍不可用)** 访问 [RPMFind](https://rpmfind.net/) 或 [Vault 仓库](http://vault.centos.org/) 搜索以下包并手动安装: - `devtoolset-7-gcc` - `devtoolset-7-gcc-c++` - 相关依赖包(如 `libmpc`, `mpfr` 等) 下载后安装: ```bash rpm -ivh *.rpm # 需按依赖顺序安装 ``` #### 6. **升级到更高版本(推荐)** 若 `devtoolset-7` 已彻底弃用,建议升级至 `devtoolset-8` 或更高版本(兼容性更好且支持新特性)[^1]。 参考命令: ```bash yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ source /opt/rh/devtoolset-8/enable echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile ``` #### 7. **验证安装** ```bash gcc --version # 确认版本是否正确 ``` --- ### 相关问题 1. **如何永久启用 `devtoolset` 的环境变量?** 需将 `source /opt/rh/devtoolset-X/enable` 添加到 `/etc/profile` 或用户 `.bashrc` 中[^1]。 2. **`devtoolset` 和系统默认 GCC 版本冲突吗?** 不冲突,`devtoolset` 通过环境变量切换路径,不影响系统默认工具链。 3. **能否同时安装多个版本的 `devtoolset`?** 可以,通过 `scl enable devtoolset-X bash` 切换不同版本。 : 引用[1] [^2]: 引用[2] [^3]: 引用[3] [^4]: 引用[4]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值