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.mzph.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支持的应用…