WSL2 Ubuntu安裝GCC不同版本

WSL2 Ubuntu安裝GCC不同版本

  • 介紹
    • 安裝gcc 7.1
      • 方法 1:通過源碼編譯安裝 GCC 7.1
        • 步驟 1:安裝編譯依賴
        • 步驟 2:下載 GCC 7.1 源碼
        • 步驟 3:配置和編譯
        • 步驟 4:配置環境變量
        • 步驟 5:驗證安裝
      • 方法 2:通過第三方 PPA 安裝(不推薦,可能不兼容)
      • 注意事項
    • 安裝gcc 10、11及以上(以11為例)
      • 1. 更新軟件包列表
      • 2. 安裝 GCC 11 和 G++ 11
        • 直接通過官方倉庫安裝(推薦)
      • 3. 驗證安裝
      • 4. 設置默認版本(可選)
      • 5. 完全卸載(如果需要)
    • 卸載安裝
      • 1. 刪除安裝目錄
      • 2. 清理環境變量
      • 3. 移除 `update-alternatives` 配置(如果配置過)
      • 4. 驗證卸載
      • 5. 額外清理(可選)
      • 注意事項

介紹

安裝gcc 7.1

在 WSL2 的 Ubuntu 24.04 中安裝 GCC 7.1 需要手動操作,因為該版本較舊且 Ubuntu 24.04 的默認倉庫已不再提供。以下是分步安裝方法:

方法 1:通過源碼編譯安裝 GCC 7.1

步驟 1:安裝編譯依賴
sudo apt update
sudo apt install -y build-essential \gcc-multilib g++-multilib \libgmp-dev libmpfr-dev libmpc-dev \flex bison texinfo
步驟 2:下載 GCC 7.1 源碼
wget https://ftp.gnu.org/gnu/gcc/gcc-7.1.0/gcc-7.1.0.tar.gz
tar -xzvf gcc-7.1.0.tar.gz
cd gcc-7.1.0
步驟 3:配置和編譯
./configure --prefix=/usr/local/gcc-7.1 \--enable-languages=c,c++ \--disable-multilib \--disable-bootstrap
make -j$(nproc)  # 根據 CPU 核心數調整并行編譯(如 `-j4`)
sudo make install
步驟 4:配置環境變量
# 將以下內容添加到 ~/.bashrc
echo 'export PATH=/usr/local/gcc-7.1/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-7.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
步驟 5:驗證安裝
gcc --version  # 應輸出 "gcc (GCC) 7.1.0"

方法 2:通過第三方 PPA 安裝(不推薦,可能不兼容)

如果存在支持 Ubuntu 24.04 的舊版 GCC PPA,可以嘗試:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-7 g++-7

Ubuntu 24.04 可能已移除對 GCC 7 的支持,此方法大概率失敗。


注意事項

  1. 兼容性問題

    • Ubuntu 24.04 的庫依賴較新,安裝舊版 GCC 7.1 可能導致動態鏈接庫沖突。
    • 推薦優先使用 Docker 容器源碼編譯
  2. 多版本管理

    • 使用 update-alternatives 管理多版本 GCC:
      sudo update-alternatives --install /usr/bin/gcc gcc /usr/local/gcc-7.1/bin/gcc 70
      sudo update-alternatives --config gcc  # 交互式切換版本
      
  3. 依賴修復

    • 如果安裝后出現依賴錯誤,嘗試:
      sudo apt --fix-broken install
      

安裝gcc 10、11及以上(以11為例)

在 Ubuntu 系統中安裝 GCC 11G++ 11 的步驟如下:

1. 更新軟件包列表

sudo apt update

2. 安裝 GCC 11 和 G++ 11

直接通過官方倉庫安裝(推薦)

如果 Ubuntu 倉庫中已包含 GCC 11:

sudo apt install gcc-11 g++-11

3. 驗證安裝

檢查版本:

gcc-11 --version  # 應輸出 "gcc (Ubuntu 11.x.x)"
g++-11 --version  # 應輸出 "g++ (Ubuntu 11.x.x)"

4. 設置默認版本(可選)

如果系統中存在多個 GCC/G++ 版本,可通過 update-alternatives 切換默認版本:

# 配置 GCC
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11# 配置 G++
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11# 交互式選擇默認版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

5. 完全卸載(如果需要)

sudo apt remove gcc-11 g++-11

卸載安裝

要卸載通過源碼編譯安裝的軟件(例如 GCC 7.1),需手動刪除安裝時生成的文件和目錄。以下是詳細步驟:

1. 刪除安裝目錄

如果編譯安裝時指定了 --prefix=/usr/local/gcc-7.1,直接刪除該目錄:

sudo rm -rf /usr/local/gcc-7.1

2. 清理環境變量

如果之前在 ~/.bashrc~/.profile 中添加了環境變量,需手動移除相關行:

nano ~/.bashrc

刪除以下類似內容:

export PATH=/usr/local/gcc-7.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/gcc-7.1/lib64:$LD_LIBRARY_PATH

保存文件后生效:

source ~/.bashrc

3. 移除 update-alternatives 配置(如果配置過)

如果通過 update-alternatives 設置了默認版本,需移除相關條目:

# 列出所有 GCC 版本
sudo update-alternatives --config gcc# 移除 GCC 7.1 的條目
sudo update-alternatives --remove gcc /usr/local/gcc-7.1/bin/gcc

4. 驗證卸載

檢查是否徹底移除:

gcc --version          # 應不再顯示 7.1 版本
ls /usr/local/gcc-7.1  # 目錄應不存在

5. 額外清理(可選)

  • 刪除源碼目錄
    rm -rf ~/gcc-7.1.0  # 假設源碼解壓到用戶主目錄
    
  • 清理系統緩存
    sudo ldconfig  # 更新動態鏈接庫緩存
    

注意事項

  1. 謹慎操作:使用 sudo rm -rf 時確保路徑正確,避免誤刪系統文件。
  2. 多版本共存:如果系統中存在多個 GCC 版本,確保其他版本不受影響。
  3. 依賴問題:卸載后,依賴該 GCC 版本的程序可能無法運行,需重新配置或安裝。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897947.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

淘寶API vs 爬蟲:合規獲取實時商品數據的成本與效率對比

以下是淘寶 API 和爬蟲在合規獲取實時商品數據方面的成本與效率對比: 成本對比 淘寶 API 開發成本:需要申請開發者賬號并獲取 API 權限,部分敏感或高頻訪問的接口可能需要額外的審核或付費。開發過程中需要按照平臺規定進行編程,相…

Android 手機啟動過程

梳理 為了梳理思路,筆者畫了一幅關于 Android 手機啟動的過程圖片內容純屬個人見解,如有錯誤,歡迎各位指正

【Linux】:封裝線程

朋友們、伙計們,我們又見面了,本期來給大家帶來封裝線程相關的知識點,如果看完之后對你有一定的啟發,那么請留下你的三連,祝大家心想事成! C 語 言 專 欄:C語言:從入門到精通 數據結…

正則表達式全解析 + Java常用示例

目錄 一、正則表達式基礎(一)元字符(二)字符集(三)量詞 二、正則表達式常用示例(一)驗證郵箱格式(二)驗證電話號碼格式(三)提取網頁中…

LoRa數傳、點對點通信、Mesh網絡、ZigBee以及圖傳技術的區別和特點

以下是LoRa數傳、點對點通信、Mesh網絡、ZigBee以及圖傳技術的區別和特點: 1.LoRa數傳? 特點:LoRa是一種基于擴頻技術的低功耗廣域網(LPWAN)通信技術,具有傳輸距離遠(城市環境可達2-5公里,鄉村…

星越L_三角指示牌及危險警示燈使用

目錄 1.打開危險警告燈 2.取出反光背心穿上 3.取出指示牌 4.放置三角指示牌。 1.打開危險警示燈 2.取出反光背心穿上 3.取出指示牌

AI與人的智能,改變一生的思維模型【7】易得性偏差

目錄 **易得性偏差思維模型:大腦的「熱搜算法」與反操縱指南****病毒式定義:你的大腦正在被「熱搜」劫持****四大核心攻擊路徑與史詩級案例****1. 信息過載時代的「認知短路」****2. 媒體放大器的「恐怖濾鏡」****3. 個人經驗的「數據暴政」****4. 社交繭…

Jmeter的簡單使用

前置工作 確保java8 版本以上jmeter下載路徑(選擇Binaries):https://jmeter.apache.org/download_jmeter.cgi直接解壓,找到bin下面的文件:jmeter.bat(可選)漢化,修改 jmeter.proper…

MyBatis源碼分析の配置文件解析

文章目錄 前言一、SqlSessionFactoryBuilder1.1、XMLConfigBuilder1.2、parse 二、mappers標簽的解析2.1、cacheElement2.1.1、緩存策略 2.2、buildStatementFromContext2.2.1、sql的解析 前言 本篇主要介紹MyBatis源碼中的配置文件解析部分。MyBatis是對于傳統JDBC的封裝&…

golang快速上手基礎語法

變量 第一種,指定變量類型,聲明后若不賦值,使用默認值0 package mainimport "fmt"func main() {var a int //第一種,指定變量類型,聲明后若不賦值,使用默認值0。fmt.Printf(" a %d\n"…

Java中的訪問修飾符有哪些

在 Java 中,訪問修飾符(Access Modifiers)用于控制類、方法、變量和構造器的訪問權限。Java 提供了四種訪問修飾符,分別是: publicprotecteddefault(包私有,沒有顯式修飾符)private…

【公務員考試】高效備考指南

高效備考指南:從計劃制定到心態調整的全面攻略 公務員考試競爭激烈,備考過程既需要科學規劃,也需要持之以恒的努力。結合多位高分考生的經驗與專業機構的指導,本文整理了一套系統化的備考策略,涵蓋目標設定、學習方法…

工程實踐:如何使用SU17無人機來實現室內巡檢任務

阿木實驗室最近發布了科研開發者版本的無人機SU17,該無人機上集成了四目視覺,三維激光雷達,云臺吊艙,高算力的機載計算機,是一個非常合適的平臺用于室內外巡檢場景。同時阿木實驗室維護了多個和無人機相關的開源項目。…

強大的CSS變量

在 CSS 中,變量(Custom Properties) 允許你定義可重用的值,方便在整個樣式表中使用和修改。CSS 變量的基本語法如下: 1. 定義 CSS 變量 CSS 變量通常在 :root 偽類中定義,以便它們可用于整個文檔&#xf…

藍橋杯嵌入式賽道復習筆記1(led點亮)

前言 基礎的文件創建,參賽資源代碼的導入,我就不說了,直接說CubeMX的配置以及代碼邏輯思路的書寫,在此我也預祝大家人人拿國獎 理論講解 原理圖簡介 1.由于存在PC8引腳到PC15引腳存在沖突,那么官方硬件給的解決方案…

Linux進程1.0--task_struct

1.硬件:馮諾依曼體系結構: 單個分析:、 數據流向:數據必須先進入輸入設備,再到存儲器,然后由存儲器給控制器,控制器收到以后進行相應的處理后,再傳回存儲器,存儲器最終傳…

本地部署Jina AI Reader:用Docker打造你的智能解析引擎

本地部署Jina AI Reader:用Docker打造你的智能解析引擎 🌟 引言:為什么需要本地部署?📌 場景應用圖譜🔧 部署指南(Linux環境)1. 環境準備2. Docker部署3. 驗證服務狀態 &#x1f680…

貪心算法簡介(greed)

前言: 貪心算法(Greedy Algorithm)是一種在每個決策階段都選擇當前最優解的算法策略,通過局部最優的累積來尋求全局最優解。其本質是"短視"策略,不回溯已做選擇。 什么是貪心、如何來理解貪心(個人對貪心的…

代碼隨想錄day17 二叉樹part05

654.最大二叉樹 給定一個不重復的整數數組 nums 。 最大二叉樹 可以用下面的算法從 nums 遞歸地構建: 創建一個根節點,其值為 nums 中的最大值。 遞歸地在最大值 左邊 的 子數組前綴上 構建左子樹。 遞歸地在最大值 右邊 的 子數組后綴上 構建右子樹。 返回 nums …

宇樹人形機器人開源模型

1. 下載源碼 https://github.com/unitreerobotics/unitree_ros.git2. 啟動Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 這個錯誤通常出現在虛擬機環境中運行需要OpenGL支持的應用…