KICK第四讲Linux 系统下安装 GCC 编译器全指南

Linux 系统下安装 GCC 编译器全指南

GCC(GNU Compiler Collection)是 Linux 系统下最常用的编译器之一,支持 C/C++、Java 等多种编程语言。本文将介绍不同 Linux 发行版下的安装方法,帮助开发者快速配置开发环境。

一、使用包管理器快速安装(推荐)

大多数 Linux 发行版通过官方仓库提供 GCC,适合新手快速部署。

  1. Debian/Ubuntu 系列(apt-get)

    • 打开终端,更新软件包列表:
      sudo apt update && sudo apt upgrade
      
    • 安装编译工具包(含 GCC、G++、Make 等):
      sudo apt install build-essential
      
    • 验证安装:
      gcc --version
      
  2. RedHat/CentOS 系列(yum)

    • 启用开发者工具组:
      sudo yum groupinstall "Development Tools"
      
    • 或直接安装 GCC:
      sudo yum install gcc
      
二、通过 RPM 包手动安装(适合特定版本需求)

若需安装指定版本,可从 RPM 仓库下载二进制包。

  1. 搜索 RPM 包:访问 rpm.pbone.net,输入关键词(如 gcc-4.1.2)查找匹配的包。
  2. 下载后按顺序安装依赖:
    sudo rpm -ivh cpp-4.1.2-42.el5.i386.rpm
    sudo rpm -ivh kernel-headers-2.6.18-92.el5.i386.rpm
    sudo rpm -ivh glibc-headers-2.5-24.i386.rpm
    sudo rpm -ivh glibc-devel-2.5-24.i386.rpm
    sudo rpm -ivh libgomp-4.1.2-42.el5.i386.rpm
    sudo rpm -ivh gcc-4.1.2-42.el5.i386.rpm
    
  3. 卸载命令:
    sudo rpm -e gcc
    

注意:RPM 安装需手动处理依赖关系,建议优先使用包管理器。

三、从源代码编译安装(高级用户适用)

若需自定义配置或安装最新版本,可通过源码编译。

  1. 下载依赖库

    • GMP:ftp://ftp.gnu.org/gnu/gmp/
    • MPFR:ftp://ftp.gnu.org/gnu/mpfr/
    • MPC:ftp://ftp.gnu.org/gnu/mpc/
  2. 依次编译安装依赖

    # 以 GMP 为例
    tar -jxvf gmp-5.0.1.tar.bz2
    cd gmp-5.0.1
    mkdir temp && cd temp
    ../configure --prefix=/usr/local/gmp-5.0.1
    make && sudo make install
    
    • MPFR 和 MPC 需指定依赖路径:
      ../configure --prefix=/usr/local/mpfr-3.1.0 --with-gmp=/usr/local/gmp-5.0.1
      
  3. 安装 GCC

    • 下载 GCC 源码(如 gcc-4.3.4.tar.gz)并解压:
      tar -zxvf gcc-4.3.4.tar.gz
      cd gcc-4.3.4
      
    • 配置编译参数(指定依赖路径):
      ./configure --prefix=/usr/local/gcc-4.3.4 --enable-languages=c,c++ --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.0 --with-mpc=/usr/local/mpc-1.0.2
      
    • 编译并安装(耗时较长):
      make -j$(nproc) && sudo make install
      
  4. 配置环境变量

    • 将 GCC 路径添加到 PATH
      echo 'export PATH=/usr/local/gcc-4.3.4/bin:$PATH' >> ~/.bashrc
      source ~/.bashrc
      
四、多版本管理与验证
  1. 切换 GCC 版本(Ubuntu):

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
    sudo update-alternatives --config gcc
    
  2. 验证安装

    gcc --version
    g++ --version
    
总结建议
  • 新手推荐:使用 apt-getyum 快速安装稳定版本。
  • 版本控制:通过 PPA 仓库(如 ubuntu-toolchain-r/test)获取更新版本。
  • 定制需求:源码编译适合深度优化或特殊依赖场景。

安装完成后,开发者可通过 gcc -v 确认版本,并开始编写第一个 C 程序:

#include <stdio.h>
int main() { printf("Hello, GCC!\n"); return 0; }

编译运行:

gcc hello.c -o hello && ./hello

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

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

相关文章

Django系列教程(8)——函数视图及通用类视图

目录 什么是视图(View)及其工作原理 接近现实的函数视图 更复杂的案例: 视图处理用户提交的数据 基于函数的视图和基于类的视图 Django通用类视图 a. ListView b. DetailView c. CreateView d. UpdateView e. FormView f. DeleteView 小结 Django的视图(view)是处理…

c# 查找相似颜色算法

下是一个基于欧几里得距离的C#颜色相似度查找算法实现,包含详细注释和优化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 颜色容器 - 使用字典存储颜色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…

【A2DP】蓝牙音频编解码器互操作性要求详解

目录 一、音频编解码器互操作性&#xff1a;核心要点总览 二、必选与可选编解码器互操作性要求大盘点 2.1 必选与可选的编解码器支持 2.2 必选编解码器要求 2.3 可选编解码器要求 2.4 厂商自定义&#xff08;Vendor Specific&#xff09;A2DP编解码器互操作性要求 2.5 不…

electron 设置跨域iframe

在 Electron 的主进程中禁用同源策略 在 Electron 的主进程文件中添加 app.commandLine.appendSwitch("disable-site-isolation-trials"); 来禁用站点隔离试验。在创建 BrowserWindow 时&#xff0c;设置 webPreferences 的 webSecurity: false 来禁用同源策略。

c-线程创建,同步互斥,互斥锁;

文章目录 案例描述1代码实现代码解释 案例背景2代码实现代码解析关键概念总结扩展练习 案例描述1 我们将模拟一个简单的售票系统&#xff0c;其中有两个售票窗口同时出售100张票。为了确保不会卖出超过100张票&#xff0c;并且不会出现卖票时的竞态条件&#xff08;race condi…

SpringBoot第二天

目录 1.Web开发 1.1简介 1.2SpringBoot对静态资源的映射规则 1.3模板引擎 1.3.1引入thymeleaf&#xff1b; 1.3.2Thymeleaf语法 1.3.2.1标准表达式语法 1.变量表达式 1.3.2.2表达式支持的语法 1.3.2.3常用的thymeleaf标签 1.4Springboot整合springmvc 1.4.1Springmvc…

Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级

一、缓存雪崩&#xff1a; 1、什么是缓存雪崩&#xff1a; 如果缓在某一个时刻出现大规模的key失效&#xff0c;那么就会导致大量的请求打在了数据库上面&#xff0c;导致数据库压力巨大&#xff0c;如果在高并发的情况下&#xff0c;可能瞬间就会导致数据库宕机。这时候如果…

Html5记忆翻牌游戏开发经验分享

H5记忆翻牌游戏开发经验分享 这里写目录标题 H5记忆翻牌游戏开发经验分享前言项目概述技术要点解析1. 页面布局&#xff08;HTML CSS&#xff09;响应式设计 2. 翻牌动画效果3. 游戏逻辑实现状态管理卡片配对检测 开发技巧总结1. 模块化设计2. 性能优化3. 用户体验 踩坑经验扩…

【开源+代码解读】Search-R1:基于强化学习的检索增强大语言模型框架3小时即可打造个人AI-search

大语言模型(LLMs)在处理复杂推理和实时信息检索时面临两大挑战:知识局限性(无法获取最新外部知识)和检索灵活性不足(传统方法依赖固定检索流程)。现有方法如检索增强生成(RAG)和工具调用(Tool-Use)存在以下问题: RAG:单轮检索导致上下文不足,无法适应多轮交互场景…

Linux网络套接字编程——创建并绑定

目录 网络字节序 socket编程接口 socket bind 如果将进程比作一个房子&#xff0c;那套接字相当于是一扇门&#xff0c;通向与外界通信的通道。 在网络中&#xff0c;如何理解套接字呢&#xff0c;时刻记住套接字是为了标识互联网中的某一台主机上的某一个进程&#xff0c…

1720. 解码异或后的数组

解码异或后的数组 题目描述尝试做法 题目描述 未知整数数组 arr 由 n 个非负整数组成。 经编码后变为长度为 n - 1 的另一个整数数组 encoded &#xff0c;其中 encoded[i] arr[i] XOR arr[i 1] 。例如&#xff0c;arr [1,0,2,1] 经编码后得到 encoded [1,2,3] 。 给你编…

了解一下HTTP的短连接和长连接

在 HTTP 协议中&#xff0c;连接的方式主要分为长连接和短连接。这两种连接方式的主要区别在于连接的生命周期和数据传输的效率。理解它们的差异对于优化 Web 应用的性能和资源利用至关重要。以下是 HTTP 长连接和短连接的详细解释。 1. 短连接&#xff08;HTTP/1.0&#xff0…

【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)?

查看 WPS 的输入静态地理数据方法总结 方法 1:使用 gdal_translate 将二进制数据转换为 GeoTIFFgdal_translate 工具概述使用 gdal_translate 将二进制数据转换为 GeoTIFF方法 2:使用 ncdump 查看 geo_em.dXX.nc方法 3:使用 Python xarray + matplotlib 可视化 geo_em.dXX.n…

Mybatis语法bug

select * from appointment where status ‘ACCEPTED’ and expire_time< now() idea显示now&#xff08;&#xff09;这里一直报错&#xff1a; 应为标记名称 应为 Deepseek: 根据您的代码和报错信息分析&#xff0c;这是一个 MyBatis XML 文件中的 SQL 语法问题。具体原…

DeepSeek本机部署(基于Ollama和Docker管理)

目录 一、ollama 与 docker 简介 &#xff08;一&#xff09;ollama(Ollama) &#xff08;二&#xff09;docker 二、利用 ollama 和 docker 配置 deepseek-r1 的准备工作 &#xff08;一&#xff09;硬件需求 &#xff08;二&#xff09;软件安装 三、配置 deepseek-r1…

小程序 wxml 语法 —— 39 简单双向数据绑定

在 WXML 中&#xff0c;普通属性的绑定是单向的&#xff0c;比如 <input value"{{ value }}" />&#xff0c;当数据发生改变时&#xff0c;页面也会随之发生变化&#xff0c;但是当用户在输入框中输入最新内容&#xff0c;最新内容并不会同步给 value 数据&…

Linux第一次练习

1、找到你的Linux系统上的不同颜色的文件&#xff0c;每一种颜色的文件找到3个以上 蓝色&#xff1a; 白色&#xff1a; 绿色&#xff1a; 红色&#xff1a; 黄色&#xff1a; 2、设置一个ping的别名永久生效&#xff0c;设置一个ymd的别名date %F永久生效

《C#上位机开发从门外到门内》2-2:I2C总线协议及其应用详解

文章目录 一、引言二、I2C总线协议的基本概念三、I2C通信机制3.1 硬件结构与基本原理3.2 信号的起始与终止3.3 数据传输格式及时序3.4 时钟同步与时钟伸展 四、设备寻址与数据传输4.1 I2C设备寻址方式4.2 地址冲突及解决方法4.3 数据传输过程中的确认机制4.4 I2C数据帧结构与传…

Trae IDE:解锁 AI 驱动的高效编程体验

Trae 介绍 Trae 是字节跳动推出的一款面向开发者的 AI 驱动的集成开发环境&#xff08;IDE&#xff09;&#xff0c;于 2024 年 1 月 19 日在新加坡正式发布海外版&#xff0c;2025 年 3 月 3 日发布国内版。海外版由字节跳动旗下的 SPRING&#xff08;SG&#xff09;PTE.LTD.…

玩转python:通俗易懂掌握高级数据结构:collections模块之namedtuple

引言 namedtuple是Python中collections模块提供的一个强大工具&#xff0c;用于创建具有字段名的元组。它不仅具备元组的不可变性&#xff0c;还能通过字段名访问元素&#xff0c;极大地提高了代码的可读性和可维护性。本文将详细介绍namedtuple的关键用法和特性&#xff0c;并…