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
英文地址,請注明出處:http://en.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;并…