【Linux】升级GCC(版本9.3),补充:binutils

news2024/12/23 15:23:18

GCC:GNU Compiler Collection 。编译器,几乎Linux中所有程序(包括内核)都是gcc编译的,包括libc。

gcc不仅仅是编译器,gcc也有很多库,依赖libc。gcc和libc互相依赖。

GCC官网:GCC, the GNU Compiler Collection - GNU Project

 

centos7升级GCC(版本9.3):

centos7默认安装的gcc版本是4.8.5。可使用SCL源升级gcc到更高版本

① 先使用yum安装SCL源(SCL repostory)。

注:SCL(software collections)。

# 安装SCL源
yum install -y centos-release-scl

② 再使用yum安装devtoolset-9的软件包

 devtoolset-9的说明:User Guide Red Hat Developer Toolset 9 | Red Hat Customer Portal

可以安装整个devtoolset-9,可以安装软件包组,也可以只安装需要的软件包。

安装整个devtoolset-9:yum install devtoolset-9

安装软件包组:yum install devtoolset-9-toolchain

安装需要的软件包:yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

 

本次只安装需要的软件包:

# 查看yum仓库中所有与"devtoolset-9-"相关的软件包(包括已安装和可安装)
yum list devtoolset-9-\*

# 安装需要的软件包
yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

③ 使新gcc生效

#  使新版本gcc生效(临时生效,重启将回到原版本)
scl enable devtoolset-9 bash

# 查看gcc版本
gcc --version

 

使用SCL源安装的devtoolset-9的软件包默认在/opt/rh目录下。

devtoolset-9的启动文件是/opt/rh/devtoolset-9/enable。

devtoolset-9的可执行文件在/opt/rh/devtoolset-9/root/usr/bin目录下。

注:/opt/rh/devtoolset-9/root/bin目录 指向(->) /opt/rh/devtoolset-9/root/usr/bin目录。

新gcc长久生效,有两种办法,一般都会添加环境变量。但本次选择指定文件软链接到指定位置。 

# 新版本GCC长久生效的方法一:将devtoolset-9启动文件添加环境变量
echo 'source /opt/rh/devtoolset-9/enable' >> /etc/profile
# 新版本GCC长久生效的方法二:新gcc可执行文件软链接到/usr/bin目录下
# 备份原来的gcc可执行文件
mv /usr/bin/gcc /usr/bin/gcc-4.8.5

# 将新gcc可执行文件软链接到指定位置
ln -s /opt/rh/devtoolset-9/root/usr/bin/gcc /usr/bin/gcc

补充:binutils

devtoolset-9-binutils软件包提供binutils(版本是2.32)。binutils是二进制工具的集合,二进制工具有ld,as,nm,objdump等。

可以通过"rpm -qa | grep binutils"查看使用yum安装的binutils版本。也可以通过二进制工具查看binutils版本(例如:ld --version)。

# 查看binutils版本
# 方法一:查看是否安装过binutils
rpm -qa | grep binutils

# 方法二:查看二进制工具版本,来间接查看binutils版本
ld --version
as --version
objdump --version
nm --version

注意:若devtoolset-9没有添加环境变量,需要将/opt/rh/devtoolset-9/root/usr/bin目录下binutils的二进制工具ld/as/objdump/nm等软链接到指定位置/usr/bin目录下,才会使用相应的新版本,否则还是使用原来的版本。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1704459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【B站 heima】小兔鲜Vue3 项目学习笔记Day05

Day05 文章目录 Day05登录1. 整体认识和路由设置2. 表单校验实现3. 表单-统一校验4. 基础登录业务实现5. Pinia管理用户数据6. Pinia 数据持久化7. 登录和非登录状态下的模板适配8. 请求拦截器携带Token9. 退出登录功能的实现10. Token失效401拦截处理 购物车1. 流程梳理2. 本地…

ubuntu下vscode的安装包

1.引言 ubuntu下面安装vscode,编码调用接口时可以跳到接口api的位置,因此在ubuntu下安装vscode还是非常有意义的。 2.下载地址 链接:https://pan.baidu.com/s/1j3XNmvbL574p_hYeBqO6dg?pwdryr7 提取码:ryr7 --来自百度网盘超…

【考研数学】线代除了「李永乐」,还能跟谁?

考研线代,除了利用了老师,我觉得还有一个宝藏老师的课程值得听! 那就是喻老,这个是我在b站上面新发现的老师,听完他的课程发现真的喜欢 他不仅在B站上开设了课程,还编写了配套的线性代数辅导讲义&#xff…

网页图片加载慢的求解指南

网页/图片加载慢的求解指南 一、前言与问题描述 今天刚换上华为的HUAWEI AX3 Pro New,连上WIFI后测速虽然比平时慢,但是也不算太离谱,如下图所示: 估计读者们有也和作者一样,还没意识到事情的严重性😁。 …

智能客服新突破:大型模型训练助力提升客户服务体验

项目场景:训练大模型智能客服 智能客服新方法在金融服务领域的科技前沿应用 ** 一、 引言 随着科技的飞速发展,智能客服作为金融服务领域的一大创新点,正在逐渐改变传统的客户服务模式。特别是在自然语言处理(NLP)等…

马斯克:AI时代人人高收入,不需要工作,商品服务不再短缺,可能性80%

当前人工智能现状和未来如何?AI时代下,人类未来会发生哪些变化? 埃隆马斯克(Elon Musk)在2024 VivaTech大会上分享了关于地球未来的诸多愿景。 投资作业本课代表摘录了其中的要点,分享给大家&#xff1a…

传承的智慧:故事里的人生启示

传承的智慧:故事里的人生启示 在你的书中,通过故事元素来呈现自己的经历、教训和见解。通过情节、角色发展和冲突展示知识和经验,对主人公的影响和变化,以及对读者的启发和教育作用。 一、故事写作的“三种格式” 要创造一个引人入胜的故事,能够吸引读者,同时有效地传达…

STM32高级控制定时器(STM32F103):输入捕获模式

目录 概述 1 输入捕获模式 1.1 原理介绍 1.2 实现步骤 1.3 发生输入捕获流程 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM调制占空比函数 3.2 应用函数库 4 测试 4.1 功能框图 4.2 运行结果 源代码下载地址&#xf…

leetcode 1241每个帖子的评论数(postgresql)

需求 编写 SQL 语句以查找每个帖子的评论数。 结果表应包含帖子的 post_id 和对应的评论数 number_of_comments 并且按 post_id 升序排列。 Submissions 可能包含重复的评论。您应该计算每个帖子的唯一评论数。 Submissions 可能包含重复的帖子。您应该将它们视为一个帖子。…

C++入门3——类与对象(2)

1.类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。可是空类中真的什么都没有吗? 其实并不是的,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有显式实现&#xf…

【AN】制作二维机械专业的动画课件,播放、停止、显示和拖拽

下面代码实现了播放、停止、显示结构图,需要配合舞台的美术资源、元件动画来实现 stop(); Bt_play.addEventListener(MouseEvent.CLICK, playmc); function playmc(event:MouseEvent):void {MC_LINE01.play();MC_Jiantou.play();MC_xiexian.play();MC_LINE02.play()…

最新php项目加密源码

压缩包里有多少个php就会被加密多少个PHP、php无需安装任何插件。源码全开源 如果上传的压缩包里有子文件夹(子文件夹里的php文件也会被加密),加密后的压缩包需要先修复一下,步骤:打开压缩包 》 工具 》 修复压缩文件…

使用LabVIEW开发RFID读卡器程序

使用LabVIEW开发RFID读卡器程序,涵盖硬件选择、初始化、数据读取与处理的整个流程。通过详细的开发步骤和示例代码,展示LabVIEW在快速开发和调试RFID应用中的优势,使用户能有效实现RFID技术在各类项目中的应用。 工作原理 RFID(…

[数据集][目标检测]打架检测数据集VOC格式3146张2类别

数据集格式:Pascal VOC格式(不包含分割的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):3146 标注数量(xml文件个数):3146 标注类别数:2 标注类别名称:["nofight","fight"] 每个类别…

电脑技巧:一台主机两个显示器的连接设置方法

目录 一、先与电脑连接好两个显示器 二、先来看看WIN7连接两个显示器设置方法 三、再来看看WIN10连接两个显示器设置方法 在日常办公场景中,为了提高工作效率和增强交互体验,常需一台电脑同时连接两个显示器,正如我们在营业厅常见到的那样…

计算机网络路由协议之内部网关协议RIP例题与详解

互联网的路由选择协议 路由器转发表的路由协议如何得出呢? 使用路由算法进行,路由算法可以分为两类: 静态路由选择策略和动态路由选择策略。 静态路由选择策略: 非自适应路由选择,人工配置每一条路由。 动态路由选…

The First项目报告:解读去中心化衍生品交易所AVEO

2023 年12月8日凌晨,Solana 生态 MEV 基础设施开发商 Jito Labs 开放了 JTO 空投申领窗口,JTO 的价格在开盘短暂震荡后迅速攀高,一度触及 4.94 美元。 JTO 是加密社区这两日关注的热门标的,而在这场讨论中,除 Solana …

【JUC编程】-多线程和CompletableFuture的使用

多线程编程 文章目录 多线程编程[toc]引言创建多线程的方式继承Thread类实现Runnable接口实现Callable接口Callable和Runnable的区别 Lambda表达式 线程的实现原理Future&FutureTask具体使用submit方法Future到FutureTask类Future注意事项局限性 CompletionService引言使用…

损失函数篇 | YOLOv8更换损失函数之Inner-IoU | 通过辅助边界框计算IoU损失

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。为弥补现有IoU损失函数在不同的检测任务中的泛化能力较弱且收敛…

C++ 虚函数和纯虚函数

虚函数 #include <iostream> using namespace std; class Vehicle //交通工具 { public:void run() const{cout << "run a vehicle. " << endl;} }; class Car : public Vehicle //汽车 { public:void run() const{cout << "run a c…