Centos 7 升级 GCC

ops/2025/3/20 21:11:19/

一、环境准备

1. 检查当前 GCC 版本

gcc --version

2. 清理系统环境

sudo yum clean allsudo yum update -y

二、安装 SCL 仓库

此处我们使用scl来切换gcc版本

SCL(Software Collections)提供高版本软件包,且与系统默认工具链隔离。

sudo yum install -y centos-release-scl

三、安装 GCC 9.3

1. 安装 devtoolset-9

sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++

 如果报错如下,是因为CentOS 7 的SCL仓库已停止维护,默认的镜像服务器已失效,导致无法通过yum安装

解决方案 (切换为阿里云镜像环境)

1、查看自己的源环境

主要查看 base是否为阿里云环境 以及 sclo rh 是否为阿里云环境(以下是配图)

yum repolist

2、切换配置信息

# 使用阿里云镜像
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo修改所有仓库配置为阿里云地址:
sudo sed -i 's|vault.centos.org|mirrors.aliyun.com/centos|g' /etc/yum.repos.d/*.repo

3、验证scl源 (如果和我的不一致可能回导致404 小伙伴可直接复制粘贴)

sudo vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo

[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=http://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/centos/RPM-GPG-KEY-CentOS-SIG-SCLo

4、重新构建

切记一定要多  

sudo yum clean all # 清除
sudo yum update -y # 更新

sudo yum makecache #构建

sudo yum clean all
sudo yum makecache

 证明没有任何问题

 5、手动下载安装文件

理论上各位不需要执行这个步骤 重新执行  sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++  命令即可 如果出现像我一样 可依照我如此下载将文件名称换成自己对于的即可

注意:我当时不知道为什么没有下载下下来 在执行命令时显示有五个文件404不找到  这是我手动配置的地址可以直接下载下来

wget http://vault.centos.org/centos/7/sclo/x86_64/rh/Packages/d/devtoolset-9-runtime-9.1-0.el7.x86_64.rpm
wget http://vault.centos.org/centos/7/sclo/x86_64/rh/Packages/d/devtoolset-9-binutils-2.32-16.el7.x86_64.rpm
wget http://vault.centos.org/centos/7/sclo/x86_64/rh/Packages/d/devtoolset-9-gcc-9.3.1-2.2.el7.x86_64.rpm
wget http://vault.centos.org/centos/7/sclo/x86_64/rh/Packages/d/devtoolset-9-gcc-c++-9.3.1-2.2.el7.x86_64.rpm
wget http://vault.centos.org/centos/7/sclo/x86_64/rh/Packages/d/devtoolset-9-libstdc++-devel-9.3.1-2.2.el7.x86_64.rpm

 6、安装环境

sudo yum install -y policycoreutils-python
sudo yum install -y scl-utils

7、编译安装文件

注意:如果你有其他文件 也仿照此格式添加上

sudo rpm -Uvh --force --nodeps devtoolset-9-runtime-9.1-0.el7.x86_64.rpm \devtoolset-9-binutils-2.32-16.el7.x86_64.rpm \devtoolset-9-gcc-9.3.1-2.2.el7.x86_64.rpm \devtoolset-9-gcc-c++-9.3.1-2.2.el7.x86_64.rpm \devtoolset-9-libstdc++-devel-9.3.1-2.2.el7.x86_64.rpm
 8、验证 GCC 是否安装成功
sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ 

2. 激活 GCC 9.3 环境

scl enable devtoolset-9 bash# 验证版本
gcc --version

切换成功 


四、永久切换为GCC 9.3

正常上述步骤后你的机器已经拥有了 9.3的环境,但是因为  scl enable devtoolset-9 bash  只是当前会话有效 当你新开会话之后 gcc 版本就会失效(小伙伴们可以打开一个新的窗口验证一下),所以建议设置成永久使用

1. 修改用户环境变量

# 写入配置信息
echo 'source /opt/rh/devtoolset-9/enable #This is  gcc version' >> ~/.bashrc# 验证是否添加成功
vim ~/.bashrc# 刷新配置
source ~/.bashrc

2. 验证生效

打开新客户端 验证 gcc 版本是否生效

亲测可用

注:这里如果不想启动 只需要把 写入的数据删除掉,打开新窗口就回变回原来的版本


注:大家安装时 一定要注意自己的环境,目前我安装redis用到了 9.X的GCC环境就不做其他演示,个人理解如果想要升级至 GCC 11 也是此流程,文件不同罢了。


http://www.ppmy.cn/ops/167391.html

相关文章

普通鼠标的500连击的工具来了!!!

今天介绍的这款软件叫:鼠标录制器,是一款大小只有54K的鼠标连点器,软件是绿色单文件版。抢票,拍牌,摇号都能用上。文末有分享链接 在使用先我们先设置快捷键,这样我们在录制和停止录制的时候会更方便。 软件…

卷积神经网络 - 汇聚层

卷积神经网络一般由卷积层、汇聚层和全连接层构成,本文我们来学习汇聚层。 汇聚层(Pooling Layer)也叫子采样层(Subsampling Layer),其作用是进 行特征选择,降低特征数量,从而减少参数数量。 卷积层虽然可以显著减少网络中连接的…

OpenManus-RL 通过强化学习(RL)提升大型语言模型(LLM)代理的推理和决策能力

关键要点 OpenManus-RL 是一个开源项目,旨在通过强化学习(RL)提升大型语言模型(LLM)代理的推理和决策能力。它由 Ulab-UIUC 和 MetaGPT 合作开发,基于原始 OpenManus 项目扩展。项目包括一个数据集&#x…

Python学习第十九天

Django-分页 后端分页 Django提供了Paginator类来实现后端分页。Paginator类可以将一个查询集(QuerySet)分成多个页面,每个页面包含指定数量的对象。 from django.shortcuts import render, redirect, get_object_or_404 from .models impo…

2023南京理工大学计算机复试上机真题

2023南京理工大学计算机复试上机真题 2023南京理工大学计算机复试机试真题 历年南京理工大学计算机复试上机真题 在线评测:传送门:pgcode.cn 括号匹配二 题目描述 苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号&#…

kotlin @JvmStatic的使用

一 kotlin class KtA {companion object {JvmStaticfun invokeStatic() {}fun invokeNoStatic() {}} }二 转成java package test.d;import kotlin.Metadata; import kotlin.jvm.JvmStatic; import kotlin.jvm.internal.DefaultConstructorMarker; import org.jetbrains.annota…

先有OLE还是先有COM?

一、历史发展:OLE先于COM诞生‌ 1.OLE的早期阶段(1991年)‌ OLE(Object Linking and Embedding)最初是微软为解决‌复合文档‌问题提出的技术,例如在Word中插入Excel表格或图片‌。其1.0版本于1991年发布…

类和对象C++

封装 将属性和行为作为一个整体&#xff0c;表现生活中的事物 封装的意义 #include<iostream> #include<string.h> using namespace std; //设计学生类 class student { public://公共权限/*类中的属性和行为 统一称为成员属性成员属性成员变量行为成员函数成员…