当前位置: 首页 > article >正文

CentOS 7如何编译安装升级gcc至7.5版本?

CentOS 7如何编译安装升级gcc版本?

由于配置CentOS-SCLo-scl.repoCentOS-SCLo-scl-rh.repo后执行yum install -y devtoolset-7安装总是异常,遂决定编译安装gcc7.5

# 备份之前的yum .repo文件至 /tmp/repo_bak 目录
mkdir -p /tmp/repo_bak &&  cd /etc/yum.repo.d && /bin/mv ./*.repo /tmp/repo_bak# 更换yum软件源为阿里云镜像源,执行脚本后一直全部回车即可
bash <(curl -sSL https://linuxmirrors.cn/main.sh)# yum安装编译依赖
yum install -y lbzip2 gcc gcc-c++ gmp-devel mpfr-devel libmpc-devel isl-devel# 阿里云镜像源下载gcc 7.5版本源码包,升级至其它版本,更改URL中的7.5.0版本号即可
wget https://mirrors.aliyun.com/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz# 解压下载源码包
tar -zxvf ./gcc-7.5.0.tar.gz
# cd进去解压源码目录
cd gcc-7.5.0# 官方镜像源,下载速度较慢,推荐阿里云镜像源
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2# 基于阿里云镜像源下载
wget https://mirrors.aliyun.com/gnu/gmp/gmp-6.1.0.tar.bz2
wget https://mirrors.aliyun.com/gnu/mpfr/mpfr-3.1.4.tar.bz2
wget https://mirrors.aliyun.com/gnu/mpc/mpc-1.0.3.tar.gz
wget http://ftp.ntua.gr/mirror/gnu/gcc/infrastructure/isl-0.16.1.tar.bz2# 编译前务必执行检查是否ok,后输出 All prerequisites downloaded successfully. 为正常
./contrib/download_prerequisites  # 创建构建目录
cd .. && mkdir -p gcc-build-7.5.0#进入构建目录
cd gcc-build-7.5.0# 生成Makefile文件,--disable-multilib参数为只编译64位库,-enable-multilib参数为同时编译32位和64位库,是否为64位操作系统可以执行uname -a查看 x86_64为64位操作系统,i386 为32位操作系统
../gcc-7.5.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib# -j$(nproc)启动并行编译,同时运行CPU总核数个编译任务,加速编译过程,笔者测试8核CPU编译预计20分钟
make -j$(nproc)make install# 以绝对路径验证的GCC版本,是否安装成功
/usr/local/bin/gcc --versionwhich gcc      # 查看当前 GCC 路径(通常是 /usr/bin/gcc)
gcc --version  # 查看当前GCC版本# 重命名系统自带GCC相关文件
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
mv /usr/bin/g++ /usr/bin/g++-4.8.5
mv /usr/bin/gcov /usr/bin/gcov-4.8.5# 注册新 GCC 到 alternatives
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/gcc 100
update-ualternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 100
update-alternatives --install /usr/bin/gcov gcov /usr/local/bin/gcov 100# 注册旧 GCC 到 alternatives
update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 50
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8.5 50
update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.8.5 50# 输入1回车
update-alternatives --config gcc# 声明新安装GCC的环境变量,注意此步必须执行,否则后续GCC编译无法调用7.5版本新的运行库
cat << 'EOF' >> ~/.bashrc
export PATH=/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=/usr/local/lib64:$LIBRARY_PATH
export C_INCLUDE_PATH=/usr/local/include
export CPLUS_INCLUDE_PATH=/usr/local/include/c++/7.5.0
EOF
source ~/.bashrc# 以非绝对路径,查看当前GCC版本是否为7.5
cd && gcc --version

在这里插入图片描述

http://www.lryc.cn/news/2404606.html

相关文章:

  • 为什么React列表项需要key?(React key)(稳定的唯一标识key有助于React虚拟DOM优化重绘大型列表)
  • Playwright自动化测试全栈指南:从基础到企业级实践(2025终极版)
  • 飞牛云一键设置动态域名+ipv6内网直通访问内网的ssh服务-家庭云计算专家
  • 虚实共生时代的情感重构:AI 恋爱陪伴的崛起、困局与明日图景
  • 嵌入式面试高频(5)!!!C++语言(嵌入式八股文,嵌入式面经)
  • C++动态规划-线性DP
  • Java高级 | 【实验七】Springboot 过滤器和拦截器
  • es地理信息索引的类型以及geo_point‌和geo_hash的关系
  • 深入理解 Spring IOC:从概念到实践
  • Vue解决开发环境 Ajax 跨域问题
  • 行为设计模式之Command (命令)
  • 若依添加添加监听容器配置(删除键,键过期)
  • NeRF 技术深度解析:原理、局限与前沿应用探索(AI+3D 产品经理笔记 S2E04)
  • ROS2,工作空间中新建了一个python脚本,需要之后作为节点运行。告诉我步骤?
  • 【AI智能体】Spring AI MCP 从使用到操作实战详解
  • Vue:Ajax
  • 法律大语言模型(Legal LLM)技术架构
  • 理解 RAG_HYBRID_BM25_WEIGHT:打造更智能的混合检索增强生成系统
  • Hive终极性能优化指南:从原理到实战
  • 第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型
  • MobaXterm配置跳转登录堡垒机
  • 零基础在实践中学习网络安全-皮卡丘靶场(第八期-Unsafe Filedownload模块)
  • 测试 FreeSWITCH 的 mod_loopback
  • 【C++快读快写】
  • 测试(面经 八股)
  • [面试精选] 0104. 二叉树的最大深度
  • 图上合成:用于大型语言模型持续预训练的知识合成数据生成
  • MYSQL(二) ---MySQL 8.4 新特性与变量变更
  • 数学复习笔记 27
  • 现代简约壁炉:藏在极简线条里的温暖魔法