首页 > 系统相关 >CentOS7 升级 GCC 版本

CentOS7 升级 GCC 版本

时间:2024-03-08 11:23:31浏览次数:29  
标签:gcc devtoolset GCC CentOS7 编译 编译器 版本

CentOS 7 升级 GCC 版本

1. GCC工具介绍

GCC编译器:

GCC(GNU Compiler Collection)是由 GNU 开发的编程语言编译器。 GCC最初代表“GNU C Compiler”,当时只支持C语言。 后来又扩展能够支持更多编程语言,包括 C++、Fortran 和 Java 等。 因此,GCC也被重新定义为“GNU Compiler Collection”,成为历史上最优秀的编译器, 其执行效率与一般的编译器相比平均效率要高 20%~30%。

GCC编译工具链:

GCC编译工具链(toolchain),是指以GCC编译器为核心的一整套工具。它主要包含以下三部分内容:

  • gcc-core:即GCC编译器,用于完成预处理和编译过程,把C代码转换成汇编代码。
  • Binutils :除GCC编译器外的一系列小工具包括了链接器ld,汇编器as、目标文件格式查看器readelf等。
  • glibc:包含了主要的 C语言标准函数库,C语言中常常使用的打印函数printf、malloc函数就在glibc 库中。

在很多场合下会直接用GCC编译器来指代整套GCC编译工具链。

2.GCC升级

问题记录

yum 部署gcc最多升级到2.17版本,过低版本无法预编译nodejs等重要运行环境,所以需要升级GCC版本。

问题详情

常用解决的方案为手动下载gcc.tar 包到本地进行 make 编译,但是效率极慢,即使启多线程编译 make -j4 也需要花几个小时。而且性能较差的机器会造成内存耗尽导致make中断的情况。

解决方案

查询资料得知红帽官方发布有官方开发工具包来自动管理gcc,且支持多版本并存,最重要的是不用本地编译gcc。

红帽官方Developer Toolset文档地址:

https://access.redhat.com/docum

gcc升级流程

devtoolset对应gcc的版本

devtoolset-3对应gcc4.x.x版本
devtoolset-4对应gcc5.x.x版本
devtoolset-6对应gcc6.x.x版本
devtoolset-7对应gcc7.x.x版本
devtoolset-8对应gcc8.x.x版本
devtoolset-9对应gcc9.x.x版本
devtoolset-10对应gcc10.x.x版本

可通过centos-release-scl源安装devtoolset包

yum install centos-release-scl
yum install devtoolset-8

或自行添加源来安装(我这里以CentOS7为例)

vi /etc/yum.repos.d/CentOS-SCLo-scl.repo
[centos-sclo-sclo]
name=CentOS-7 - SCLo sclo
baseurl=http://mirror.centos.org/centos/7/sclo/$basearch/rh/
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

激活gcc版本,使其生效

scl enable devtoolset-8 bash
或
source /opt/rh/devtoolset-8/enable

长期使用的话,可以将其写入系统环境变量中

echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
source /etc/profile

标签:gcc,devtoolset,GCC,CentOS7,编译,编译器,版本
From: https://www.cnblogs.com/shadowmurloc-blog/p/18060565

相关文章

  • DBeaver 23.2 最新版 全系列版本、全平台(Win+Mac+Linux)永久激活破解!
    DBeaver简介DBeaver是一个SQL客户端和数据库管理工具。对于关系数据库,它使用JDBCAPI通过JDBC驱动程序与数据库交互。对于其他数据库(NoSQL),它使用专有数据库驱动程序。它提供了一个编辑器,支持代码完成和语法高亮。它提供了一种插件体系结构(基于Eclipse插件体系结构),允许用户修改应......
  • Git 开源的版本控制系统-02-base usage 基本用法
    拓展阅读Subversion开源的版本控制系统入门介绍VCSGit开源的版本控制系统-01-入门使用介绍Git开源的版本控制系统-02-baseusage基本用法Git开源的版本控制系统-03-时间数据回溯Git开源的版本控制系统-04-branchmanage分支管理Git开源的版本控制系统-05-tags标签......
  • 【教程】 iOS构建版本无效问题解决方案
     引言在进行iOS应用上架时,有时会遇到构建版本无效的问题,即通过XCode上传成功后,但在AppStoreConnect的TestFlight中无法显示构建版本,或者显示一会儿后就消失了。本文将介绍可能的原因分析,并提供解决问题的方法。问题描述最近一次上传新版本至AppStore后,发现在AppStoreCon......
  • CentOS7安装python3详细教程
    1.检查CentOS7自带python环境centos一般自带Python2,先使用python-V来查看python版本建议大家在保留python2的基础上安装一个python3,因为python2和python3还是有一些区别的,同时安装python2和python3的环境,以便不时之需或者对比学习。如果想要删除原有的python环境,可以通过下面......
  • Centos7下新硬盘的挂载操作
    1、查看当前硬盘使用情况df-h 2、查看磁盘分配情况注意区分,物理磁盘与设备(其实就是磁盘分区)的概念,一块物理磁盘可以对应N个分区,即设备BOOT信息fdisk-l如图所示vdb磁盘还未被使用,现在开始分配。 3、磁盘分配使用m查看详细命令,n添加一块新分区,默认最多只能有四个......
  • Dash 2.16版本新特性介绍
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master大家好我是费老师,几天前Dash发布了其2.16.0版本,随后在修复了一些潜在问题后,于今天发布了可稳定使用的2.16.1版本,执行下面的命令进行最新版本Dash的安装:pipinstalldash-U2.16版本中为......
  • Subversion svn 开源的版本控制系统入门介绍 VCS
    拓展阅读Subversion开源的版本控制系统入门介绍VCSGit开源的版本控制系统-01-入门使用介绍Git开源的版本控制系统-02-baseusage基本用法Git开源的版本控制系统-03-时间数据回溯Git开源的版本控制系统-04-branchmanage分支管理Git开源的版本控制系统-05-tags标签......
  • 不同版本jdk切换,为什么更改了系统变量也并未生效?(含解决方法)
    背景:在已经安装了jdk8的情况下,由于需要,再次又安装了jdk11,但之后想切换回jdk8时,发现即使更改了系统变量也没有生效。原因:安装jdk可以通过exe或者解压压缩包指定环境变量,详细步骤不细说。打开高级系统设置-环境变量-系统变量-path-编辑。注意:如果path对应“值”这一栏并不是以......
  • CentOS7 解决宝塔面板安装 Docker 和 Docker-compose 的问题
    在宝塔面板的软件商店安装Docker管理器时提示需手动安装Docker,再在面板中开启Docker插件进行可视化管理但是我手动安装Docker后依旧提示当前未安装Docker或Docker-compose,即宝塔面板的Docker管理插件仍无法识别到这些安装,在此记录下我的解决过程,如有错误,欢迎指正!1......
  • 什么是版本控制,常用的版本控制系统有哪些?
    1.什么是版本控制?版本控制(Revisioncontrol)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单来说就是用于管理多人协同开发项目的技术。2.为什么要有版本控制?没有进......