当前位置: 首页 > article >正文

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 版本的程序可能无法运行,需重新配置或安装。

相关文章:

WSL2 Ubuntu安装GCC不同版本

WSL2 Ubuntu安装GCC不同版本 介绍安装gcc 7.1方法 1:通过源码编译安装 GCC 7.1步骤 1:安装编译依赖步骤 2:下载 GCC 7.1 源码步骤 3:配置和编译步骤 4:配置环境变量步骤 5:验证安装 方法 2:通过…...

双目视觉小记

双目视觉及其数学原理 1. 双目视觉概述 双目视觉(Stereo Vision)是一种模仿人眼视觉系统的计算机视觉技术,利用两台摄像机从不同角度拍摄同一场景,通过图像处理和三维重建来获取场景的深度信息。双目视觉广泛应用于机器人、自动…...

Obsidian Copilot:打造你的专属 AI 笔记助手

Obsidian Copilot作为一款非常受欢迎的Obsidian插件,不仅极大地提升了用户的笔记管理和信息检索效率,还通过其多样化的AI功能为用户带来了前所未有的便捷体验。本文将详细介绍Obsidian Copilot的核心特点、使用方法及个人体验分享。 核心特点 Obsidian…...

VPC4-通达oa-docker逃逸-shiro反序列化-hash传递-CrackMapExec喷射-历史ptt攻击-进程注入

由于本人是菜鸡,不会免杀,所有免杀的部分就直接跳过了 (hhh) 靶场地址: 链接: https://pan.baidu.com/s/1Fh1Zg79n1yjCPe6rrQ2apA 提取码: qiag 第一台ubuntu(docker逃逸,shiro反序列化) fscan扫到一…...

稳定运行的以Oracle数据库为数据源和目标的ETL性能变差时提高性能方法和步骤

要提高以 Oracle 为数据源和目标的ETL性能,需要综合考虑数据库性能优化、ETL工具配置、查询优化、并行处理和资源管理等多个方面。优化过程中要根据具体的ETL场景和工具来选择适合的方案,同时建议进行逐步调优,测试不同方案的效果&#xff0c…...

C++类与对象——拷贝构造与运算符重载

拷贝构造函数和赋值运算符重载就是C类默认六个函数之二。 拷贝构造函数: 如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数 也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数…...

疗养院管理系统设计与实现(代码+数据库+LW)

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装疗养院管理系统软件来发挥其高效地信息处理的作用&#xf…...

2024年12月CCF-GESP编程能力等级认证C++编程四级真题解析

四级真题的难度: 一、总体难度评价 CCF-GESP编程能力等级认证C++四级真题的难度通常被认为相对较高。它不仅要求考生具备扎实的C++编程基础,还需要考生掌握一定的算法和数据结构知识,以及良好的问题解决能力。 二、具体难度分析 ‌理论知识考察‌: 单选题和判断题中,会涉…...

MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 MySQL开发陷阱与最佳实践:第1章:MySQL开发基础概述-1.1 MySQL简介与应用场景1.1.1 MySQL的发展历程与市场地位1.1.2 MySQL的核心特性与技术优势1.1.2…...

使用GitHub Actions实现Git推送自动部署到服务器

将网站一键部署到服务器的方案很多,比如纯Shell脚本结合SSH、Jenkins等工具。本文将介绍如何利用GitHub Actions这一免费且轻量的CI/CD工具,实现代码推送后自动部署到云服务器。 之前一直在使用github的工作流,确实是一个比较好用的工具。 我…...

PyTorch 系列教程:探索自然语言处理应用

本文旨在介绍如何使用PyTorch进行自然语言处理(NLP)的基础知识,包括必要的库、概念以及实际代码示例。通过阅读本文,您将能够开始您的NLP之旅。 1. 理解PyTorch PyTorch是一个开源的机器学习库,基于Torch库&#xff0…...

3.14-1列表

列表 一.列表的介绍和定义 1 .列表 类型: <class list> 2.符号:[] 3.定义列表: 方式1:[] 通过[] 来定义 list[1,2,3,4,6] print(type(list)) #<class list> 方式2: 通过list 转换 str2"12345" print(type(str2)) #<class str> list2lis…...

什么是强哈希算法pbkdf2(Password-Based Key Derivation Function)

文章目录 什么是pbkdf2使用场景 在线工具 什么是pbkdf2 维基百科&#xff1a;https://zh.wikipedia.org/zh-cn/PBKDF2 PBKDF2&#xff08;Password-Based Key Derivation Function 2&#xff09;是一种基于密码的密钥派生函数。它的主要作用是从密码和盐&#xff08;salt&…...

<meta content=“no-siteapp“ data-n-head=“ssr“ http-equiv=“Cache-Control“/>什么作用?

<meta content"no-siteapp" data-n-head"ssr" http-equiv"Cache-Control"/> 这个标签的作用是禁止某些浏览器或工具将网页转换为“应用”形式&#xff0c;尤其是针对一些特定的浏览器&#xff08;如早期的 UC 浏览器&#xff09;或移动端工…...

pyroSAR:开源的SAR数据处理与分析工具

今天为大家介绍的软件是pyroSAR&#xff1a;一款开源的SAR数据处理与分析工具。下面&#xff0c;我们将从软件的主要功能、支持的系统、软件官网等方面对其进行简单的介绍。 pyroSAR官网网址为&#xff1a;https://pyrosar.readthedocs.io/en/latest/。 pyroSAR是一个开源Pytho…...

Visual Studio里的调试(debugging)功能介绍

参考 1- Introduction to Debugging | Basic Visual Studio Debugging&#xff08;这是一位印度博主视频&#xff0c;我下面做到笔记也主要参考她的视频&#xff0c;但不得不说口音太重了&#xff0c;一股咖喱味&#xff09; 目录 个人对调试浅显的认识和对调试的介绍逐行调…...

图论part4|827. 最大人工岛、127. 单词接龙、463. 岛屿的周长

827. 最大人工岛 &#x1f517;&#xff1a;827. 最大人工岛 - 力扣&#xff08;LeetCode&#xff09;827. 最大人工岛 - 给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后&#xff0c;grid 中最大的岛屿面积是多少&#xff1f;岛屿 由一…...

Java高级-05.反射的作用、应用场景

一.反射的作用 二.案例 Student.class package com.njau.d2_reflect;public class Student {private String name;private int age;private char sex;private double height;private String hobby;public Student(String name, int age, char sex, double height, String …...

CSS中粘性定位

1.如何设置为粘性定位? 给元素设置posttion:sticky 即可实现粘性定位. 可以使用left, right ,top, bottom 四个属性调整位置,不过最常用的是top 值. 2.粘性定位的参考点在哪里? 离他最近的一个拥有"滚动机制"的祖先元素,即便这个祖先不是最近的真实可滚动祖先. 3.粘…...

CockroachDB MCP -cursor适用

CockroachDB MCP 服务器 GitHub仓库置顶 这是一个用于 Cursor 的 CockroachDB MCP 服务器&#xff0c;基于 Model Context Protocol (MCP) 规范实现&#xff0c;可以让你在 Cursor 中直接与 CockroachDB 数据库交互。 功能 连接到 CockroachDB 数据库获取数据库中的所有表获…...

cherry-studio - 多模型支持的跨平台 AI 桌面助手

GitHub&#xff1a;https://github.com/CherryHQ/cherry-studio 更多AI开源软件&#xff1a;发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI 一款支持多种大语言模型服务的跨平台桌面客户端&#xff0c;兼容 Windows、Linux 和 macOS 系统。它支持主流云端模型&am…...

docker composeyaml文件,什么是swap-space,内存不足硬盘来凑,--ipc=host,yaml文件、环境变量、容器报警健康检查

--swap-space 参数明确针对的是系统内存&#xff08;RAM&#xff09;&#xff0c;与显存&#xff08;GPU Memory&#xff09;无关。以下是关键区分&#xff1a; 内存&#xff08;RAM&#xff09; vs 显存&#xff08;GPU Memory&#xff09; 类型内存&#xff08;RAM&#xff…...

Uniapp 开发 App 端上架用户隐私协议实现指南

文章目录 引言一、为什么需要用户隐私协议&#xff1f;二、Uniapp 中实现用户隐私协议的步骤2.1 编写隐私协议内容2.2 在 Uniapp 中集成隐私协议2.3 DCloud数据采集说明2.4 配置方式3.1 Apple App Store3.2 Google Play Store 四、常见问题与解决方案4.1 隐私协议内容不完整4.2…...

Gradio ,一个实用的大模型界面

Gradio是HuggingFace的开源项目&#xff0c;GitHub 28k star。能够方便地构建AI应用的网页界面。 最大的优点是简便。对于不熟悉前端的程序员&#xff0c;能够迅速地构建基于web的AI应用。 Hello World import gradio as gr ​ def print_text(text):return "Hello Wor…...

LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?

快慢指针 为什么相遇后让快指针回到起点&#xff0c;再让快指针和慢指针都一步一步地走&#xff0c;它们就会在环的入口相遇&#xff1f; 复杂度 时间复杂度: O(n) 空间复杂度: O(1) public ListNode detectCycle(ListNode head) {ListNode slow head, fast head;ListNode …...

如何处理PHP中的编码问题

如何处理PHP中的编码问题 在PHP开发过程中&#xff0c;编码问题是一个常见且棘手的问题。无论是处理用户输入、数据库交互&#xff0c;还是与外部API通信&#xff0c;编码问题都可能导致数据乱码、解析错误甚至安全漏洞。本文将深入探讨PHP中的编码问题&#xff0c;并提供一些…...

【动手学强化学习】part8-PPO(Proximal Policy Optimization)近端策略优化算法

阐述、总结【动手学强化学习】章节内容的学习情况&#xff0c;复现并理解代码。 文章目录 一、算法背景1.1 算法目标1.2 存在问题1.3 解决方法 二、PPO-截断算法2.1 必要说明2.2 伪代码算法流程简述 2.3 算法代码2.4 运行结果2.5 算法流程说明 三、疑问四、总结 一、算法背景 …...

游戏引擎学习第159天

回顾与今天的计划 我们在完成一款游戏的制作。这个游戏没有使用任何引擎或新库&#xff0c;而是从零开始编写的完整游戏代码库&#xff0c;您可以自行编译它&#xff0c;并且它是一个完整的游戏。更特别的是&#xff0c;这个游戏甚至没有使用显卡&#xff0c;所有的渲染工作都…...

前端主题切换架构设计方案

1. 架构概述 本文档从架构设计的角度阐述项目的主题切换方案,主要关注系统各层级间的关系、数据流转以及扩展性设计,而非具体实现细节。 架构图 +-------------------------------------------+ | 用户界面层 | | +--------------+ …...

request模块基本使用方法

文章目录 一、前言二、请求2.1 请求方式2.2 请求参数2.3 cookie 三、响应 一、前言 官方文档&#xff1a;https://requests.readthedocs.io/en/latest/ 模块安装&#xff1a;pip install request 二、请求 2.1 请求方式 常用请求方法&#xff1a;get、post 请求方法含义get向…...