安装/升级 gcc

news2025/1/12 2:49:30

文章目录

    • 查看当前 gcc 版本
    • 查看 yum 软件库 gcc 版本列表
    • 下载最新版本
    • 安装

查看当前 gcc 版本

在这里插入图片描述

查看 yum 软件库 gcc 版本列表

只有一个4.8的版本,过旧
在这里插入图片描述

下载最新版本

在这里插入图片描述

wget https://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz

在这里插入图片描述

安装

  • ./configure 报错
    在这里插入图片描述

    提示需要一个支持 c++ 11 的特性的编译器,也就是说我们当前的 gcc 不支持 c++ 11
    先尝试安装 gcc 的 c++ 支持
    yum install -y gcc-c++
    在这里插入图片描述
    在这里插入图片描述

  • ./configure 再次报错
    在这里插入图片描述

  • 通过报错下面的提示,可以看到 gmp mpfr mpc 三个软件包的下载网站,分别下载安装; 下载站点
    在这里插入图片描述
    在这里插入图片描述

  • 安装 gmp

    • 下载

    wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2 --no-check-certificate

    • 解压,-xvjf选项用于解压和解压缩文件,其中 x 表示提取,v 表示显示详细信息,j 表示使用 bzip2 算法解压缩,f 表示指定文件名

    tar -xjf gmp-4.3.2.tar.bz2

    • 安装

    cd gmp-4.3.2
    ./configure 报错,提示缺少 m4
    yum install -y m4 安装 m4
    ./configure 重新配置
    make -j 编译 -j 使用多线程加速,不指定线程数量,编译器会尽量使用足够多线程加速编译
    make install
    在这里插入图片描述

    • 注意记下安装目录,一般都是在 /usr/local 下
      在这里插入图片描述
  • 安装 mpfr

    • 下载

    wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 --no-check-certificate

    • 解压

    tar -xjf mpfr-3.1.4.tar.bz2

    • 安装

    cd mpfr-3.1.4
    ./configure
    make -j
    make install

    • 注意记下安装目录,一般都是在 /usr/local 下
      在这里插入图片描述
  • 安装 mpc

    • 下载

    wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz --no-check-certificate

    • 解压

    tar -zxf mpc-1.0.3.tar.gz

    • 安装

    cd mpc-1.0.3
    ./configure
    make -j
    make install

    • 注意记下安装目录,一般都是在 /usr/local 下

    在这里插入图片描述

  • ./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local 继续报错 在这里插入图片描述
    这里应该是选择是否支持对 32-bit 程序的编译支持,如果需要,则要添加 --enable-multilib 选项。如果不需要,则要添加 --disable-multilib 选项。

  • ./configure --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --enable-multilib 这回配置成功了

  • make -j 编译,报错找不到 libgmp.so.3, 事实上我们已经安装好 gmp,且通过查看 /usr/local/lib 可以找到该库文件。编译过程中找不到是因为编译脚本链接的动态库,需要额外添加 /usr/local/lib 到环境变量 LD_LIBRARY_PATH 中。关于这点,可以参考关于编译找不到动态库问题
    在这里插入图片描述

    vim ~/.bashrc
    在最后加上一句 export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    保存退出后执行 source ~/.bashrc

  • make -j 编译,报错找不到 32-bit 相关头文件
    在这里插入图片描述
    这是由于选择了 --enable-multilib,但是当前的系统中缺少对应的 32位环境,需要安装 glibc-devel.i686

    yum install -y glibc-devel.i686

  • make -j 编译,编译了半天然后被系统信号中断,查看 /var/log/messages 发现是内存不够用了,把虚拟机的内存设置调整大一点,也可以试着不用 make -j, 直接 make,也许会减少点内存需求。
    在这里插入图片描述

  • 扩大虚拟机内存后,再次编译 make -j 这次编译成功了

  • make install 安装

  • gcc --version 查看 gcc 当前版本
    在这里插入图片描述

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

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

相关文章

【深圳五兴科技】Java后端面经

本文目录 写在前面试题总览1、java集合2、创建线程的方式3、对spring的理解4、Spring Boot 和传统 Spring 框架的一些区别5、springboot如何解决循环依赖6、对mybatis的理解7、缓存三兄弟8、接口响应慢的处理思路9、http的状态码 写在前面 关于这个专栏: 本专栏记录…

基于51单片机的电子秒表Protues仿真设计

目录 一、设计背景 二、实现功能 三、仿真结果 四、源程序 一、设计背景 随着科技的不断发展,电子设备在我们生活中扮演着愈加重要的角色。这些电子设备不仅使我们的生活更加便利,还帮助我们提高工作效率和精确度。其中,电子秒表是常用的计…

如何配置JDK的环境变量(简单灵活易懂)

前言: 开始学习java的小伙伴们一定都备一件事困扰过,那就是jdk的环境变量的配置,搞不懂为啥要配置环境变量,到底有啥子用?接下来小编带大家配置一下 配置环境变量的作用? Path:当用javac、jav…

redis 缓存击穿问题(互斥锁,逻辑过期)

1、缓存击穿问题 缓存击穿问题:一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。 场景:假设线程1在查询缓存之后,本来应该去查询数据库,然后把这个数据重新加…

Java学习笔记002——类的修饰符

在Java语言中,类的访问修饰符决定了其它类能够访问该类的方式。类有如下4种访问修饰符,在创建类时用于类的声明: 1、public: 当一个类被声明为public时,它可以从任何其他类中被访问,无论这些类位于哪个包中。通常&am…

探索设计模式的魅力:深入解析解释器模式-学习、实现与高效使用的全指南

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,并且坚持默默的做事。 探索设计模式的魅力:解析解释器模式学习、实现与高效使用全指南 文章目录 一、案…

2024大厂Java面试最火问题,1200页文档笔记

前言 ⽂章有点⻓,请耐⼼看完,绝对有收获!不想听我BB直接进⼊⾯试分享: 准备过程蚂蚁⾦服⾯试分享拼多多⾯试分享字节跳动⾯试分享最后总结个人所得(供大家参考学习) 当时我⾃⼰也准备出去看看机会&#…

2024 年广西职业院校技能大赛高职组《云计算应用》赛项赛题第 3 套

#需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! #需要资源或有问题的,可私博主!!! 某企业根据自身业务需求&…

工业网关、物联网网关与PLC网关是什么?

网关是什么? 网关是一种用于连接不同网络的网络设备,其作用是实现网络之间的通信和数据交换。它负责将一个网络的数据转发到另一个网络,并且可以进行路由、转换和过滤等处理。通常用于连接局域网和广域网之间,可以是硬件设备或者软…

Jenkins如何做到parameter页面里2个参数的联动

在Jenkins中,参数化构建是一种非常有用的功能,它可以让用户在构建过程中输入参数,从而实现更灵活的构建流程。有时候,我们希望两个参数之间能够实现联动,即一个参数的取值会影响另一个参数的取值。要实现这样的功能&am…

蚂蚁感冒c++

题目 思路 “两蚂蚁碰面会掉头,若其中一只蚂蚁感冒了,会把感冒传染给碰到的蚂蚁”,这句话看作是“两蚂蚁碰面会互相穿过,只是把感冒的状态传给了另一只蚂蚁”,因为哪只蚂蚁感冒了并不是题目的重点,重点是有…

iview碰到的一些问题总结

iview tabs嵌套使用问题 tabs嵌套使用的时候不是直接套用行了&#xff0c;直接套用会出现内层tab都集成到一级tab去&#xff0c;需要设置该属性指向对应 Tabs 的 name 字段(需要版本大于3.3.1) <Tabs name"tab1" ><TabPane label"标签1" tab&qu…

springboot基于java的中医院门诊挂号诊断就诊系统ssm+jsp

主要研究内容&#xff1a; 医院门诊挂号系统分为护士&#xff0c;医生&#xff0c;药房&#xff0c;收费&#xff0c;管理员等权限。 护士&#xff1a;挂号、退号、查询病人。挂号——就诊科室(发热门诊、骨科、妇科等等)&#xff0c;就诊医生数据库获取&#xff0c;挂号类型—…

【vue.js】文档解读【day 1】 | 模板语法1

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 模板语法前言文本插值原始HTML属性Attribute绑定动态绑定多个值 模板语法 前言 Vue 使用一种基于 HTML…

CAN总线的拓扑类型和CAN收发器(原理讲解)

1&#xff1a;CAN收发器&#xff08;原理讲解&#xff09; 从原理上来讲CAN_H拉升电压&#xff0c;或CAN_L拉低电压的原理。 以上是TJA1145AT的俯瞰图&#xff0c;此芯片是NXP比较先进的CAN收发器&#xff0c;带SPI总线系统。 回到正题&#xff0c;CAN_H和CAN_L收发器是通过内…

大模型日报|今日必读的9篇大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.Cognition is All You Need 最近对如由大型语言模型&#xff08;LLMs&#xff09;驱动的聊天机器人等对话式人工智能&#xff08;AI&#xff09;工具在复杂的现实世界知识工作中的应用进行的研究表明&#xff0c;这…

MySQL NDB Cluster 分布式架构搭建 自定义启动、重启和关闭集群Shell脚本

此次NDB Cluster使用三台虚拟机进行搭建&#xff0c;一台作为管理节点&#xff1b;而对于另外两台服务器&#xff0c;每一台都充当着数据节点和SQL节点的角色。注意不是MGR主从复制架构&#xff0c;而是分布式MySQL架构。 创建 /var/lib/mysql-cluster/config.ini Cluster全局…

uniapp iOS 真机调试

一、下载爱思助手 二、打开爱思助手&#xff0c;把你的 苹果手机 用原装数据线连接至电脑&#xff1a; 找到 工具箱 > 搜索IPA > 打开IAP签名 三、添加 IPA 文件 mac&#xff1a;finder 》应用程序 》右键 HbuilderX 》显示包内容 》HbuilderX / plugins/ lau…

seata服务器集群搭建

搭建seata-server-1.3服务器对应SpringBoot2.3.12&#xff0c;springcloud2.2.3 <spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version> 首先你安装了nacos 1解压文件 2修改cong/file.conf 让seata集群信息可以共享&#xff0c;我们应该…

基于 HBase Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数&#xff08;可选&#xff09; 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新…