Ubuntu多版本(低版本)gcc/g++安装、切换与卸载图文教程
创始人
2024-11-30 15:06:25
0次

目录

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

1 问题背景

环境:

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

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

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-5,gcc-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.04:jammygcc-11
  • Ubuntu 20.04:focalgcc-9
  • Ubuntu 18.04:bionicgcc-7
  • Ubuntu 16.04:xenialgcc-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-9到gcc-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深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》
  • …

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

相关内容

热门资讯

推荐一款!阿拉斗牌开挂功能方法... 推荐一款!阿拉斗牌开挂功能方法,阿拉斗牌其实真的有开挂方法1、阿拉斗牌免费脚本咨询教程、阿拉斗牌免费...
记者揭秘!吉祥填大坑辅助器功能... 记者揭秘!吉祥填大坑辅助器功能攻略,吉祥填大坑切实真的是有辅助器攻略亲,关键说明,吉祥填大坑透视脚本...
今日百科!271透视挂功能软件... 今日百科!271透视挂功能软件,271都是是有透视挂软件1、玩家可以在271透视最简单三个步骤对游戏...
记者爆料!慕雪娱乐透视功能神器... 记者爆料!慕雪娱乐透视功能神器,慕雪娱乐本来是真的有透视神器1.慕雪娱乐 选牌创建新账号,点击进入游...
每日必备!新奇玩乐透视挂功能神... 每日必备!新奇玩乐透视挂功能神器,新奇玩乐切实真的是有透视挂神器暗藏猫腻,小编详细说明新奇玩乐破解器...
重大来袭!九五娱乐透视挂功能方... 重大来袭!九五娱乐透视挂功能方法,九五娱乐其实存在有透视挂方法一、九五娱乐游戏安装教程牌型概率发牌机...
分享个大家!残局斗地主开挂功能... 分享个大家!残局斗地主开挂功能脚本,残局斗地主一贯是有开挂脚本1、下载好残局斗地主脚本下载之后点击打...
研究成果!澳门新葡京透视挂功能... 研究成果!澳门新葡京透视挂功能教程,澳门新葡京切实是有透视挂教程1)澳门新葡京有没有挂:进一步探索澳...
玩家必看科普!福运到2辅助器功... 玩家必看科普!福运到2辅助器功能神器,福运到2总是真的有辅助器神器1、福运到2辅助器安装包、福运到2...
三分钟了解!心动麻将透视挂功能... 三分钟了解!心动麻将透视挂功能技巧,心动麻将果然是真的有透视挂技巧心动麻将破解侠是真的助透视。每个模...