Ubuntu多版本(低版本)gcc/g++安装、切换与卸载图文教程

ops/2024/10/19 2:17:21/

目录

  • 1 问题背景
  • 2 多版本安装
  • 3 多版本切换
  • 4 多版本卸载
  • 5 其他问题

1 问题背景

环境:

  • gcc 9.4.0
  • g++ 9.4.0
  • Ubuntu20.04

现象:通过apt install build-essential安装的gccg++默认是当前版本系统支持的最高版本编译器,但是很多工程的编译需要安装低版本

2 多版本安装

终端输入

apt-cache policy gcc-9

在这里插入图片描述
可以发现有不少gcc-9的发行版可供下载。假设我们需要安装gcc-5,输入

apt-cache policy gcc-5

发现

在这里插入图片描述
所以此时直接安装会显示E: Package 'gcc-5' has no installation candidate。本质原因在于,Ubuntu 20.04使用的软件源只包含gcc-9而没有gcc-5gcc-5存在于更低版本的Ubuntu源中。那么解决方案就是添加低版本的Ubuntu源,具体地

sudo vim /etc/apt/sources.list

在末尾添加

deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

上面源中每一行中的xenial标识为ubuntu16.04,若为其他版本Ubuntu,将对应xenial改为其他版本标识,常用的Ubuntu版本代号如下:

  • Ubuntu 22.04jammy gcc-11
  • Ubuntu 20.04focal gcc-9
  • Ubuntu 18.04bionic gcc-7
  • Ubuntu 16.04xenial gcc-5

接着更新软件缓存并再次查找gcc-5缓存

sudo apt-get update
apt-cache policy gcc-5

在这里插入图片描述
选择其中一个版本进行安装即可

sudo apt-get install gcc-5=5.4.0-6ubuntu1~16.04.12
sudo apt-get install g++-5=5.4.0-6ubuntu1~16.04.12

3 多版本切换

通过设置不同版本的优先级实现切换

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 40
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50
sudo update-alternatives --config gcc

在这里插入图片描述

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 50
sudo update-alternatives --config g++

此时再输入

gcc --version

实现了从gcc-9gcc-5的切换

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4 多版本卸载

终端输入

sudo apt purge --autoremove -y gcc-5 g++-5

即可。其他版本同理

5 其他问题

  1. 公钥缺失
    W: GPG error: http://mirrors.aliyun.com/ubuntu xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
    E: The repository 'http://mirrors.aliyun.com/ubuntu xenial InRelease' is not signed.
    N: Updating from such a repository can't be done securely, and is therefore disabled by default.
    N: See apt-secure(8) manpage for repository creation and user configuration details.
    
    解决方案:根据报错信息NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32导入对应公钥即可
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32
    

🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

http://www.ppmy.cn/ops/34286.html

相关文章

Python中的yield

文章目录 1. Python中的yield1.1 一个简单的示例1.2 示例的每一步含义 2. yield 和return的区别2.1 一个简单的示例2.2 示例中每一步的含义 3. yield中的send()方法3.1 一个简单的示例3.2 示例中每一步的含义 4. yield中的throw()方法4.1 一个简单的示例4.2 示例中每一步的含义…

微信小程序:Error: 系统错误,错误码:6000100,unbind download url [日期时间] 自留记录

微信小程序:Error: 系统错误,错误码:6000100,unbind download url [日期时间] 微信开发中一直弹这个很烦人,百度一圈没发现有效的解决方案。捣鼓了下,是开启的 【数据预拉取】 解决方案: 1、打开开发者工…

【mysql】深入探索mysql中的各种约束条件

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Linux(openEuler、CentOS8)基于chrony企业内网NTP服务器搭建实验

一、知识点 chrony 是由 守护进程 chronyd 以及 命令行工具 chronyc 组成的 chronyd 在后台静默运行并通过 123 端口与时间服务器定时同步时间,默认的配置文件是 /etc/chrony.conf chronyc 通过 323 端口与 chronyd 交互,可监控 chronyd 的性能并在运…

《QT实用小工具·五十六》自适应界面变化的控件

1、概述 源码放在文章末尾 该项目实现了网格显示多张带文字的图片在界面中自适应布局 特点 跟随窗口大小变换位置,并带移动动画 响应鼠标事件,图片缩放动画 点击水波纹动画 项目demo演示如下所示: 项目部分代码如下所示: #i…

Amine-PEG-Amine,956496-54-1在生物成像、生物传感器等领域具有广泛的应用

【试剂详情】 英文名称 Amine-PEG-Amine,NH2-PEG-NH2 中文名称 氨基-聚乙二醇-氨基,氨基PEG氨基, 双端氨基聚乙二醇 CAS号 956496-54-1 外观性状 由分子量决定,液体或者固体 分子量 0.4k,0.6k,1k&…

git--.gitignore--使用/详解/实例

简介 本文介绍git的.gitignore忽略文件的用法。 项目中并不是所有文件都需要保存到版本库中的,例如“target”目录及目录下的文件就可以忽略。 忽略某个文件(不提交到版本库的方法):在Git工作区的根目录下创建一个.gitignore文件…

技术叠加特性之下的中国大模型应用优势

在底层竞争上,中国的能力还有待提升。只要把握住应用的这个关键,尊重科技的市场规律,突破就是水到渠成的事。如果一味实施全面赶超战略,反而可能欲速则不达。 9月7日,腾讯混元大模型在2023腾讯全球数字生态大会上正式…