Ubuntu下管理多个GCC版本

Linux update-alternatives 管理 GCC 版本指南

在 Linux 系统(如 Ubuntu 或 Debian)中,update-alternatives 是一个用于管理同一功能的不同版本的工具。本文将详细讲解如何使用 update-alternatives 管理 gcc(GNU C Compiler)的不同版本。

1. 基本概念

update-alternatives 允许用户在多个版本的同一程序之间进行选择。例如,在安装了 gcc-8gcc-9gcc-10 的情况下,可以通过该工具自由切换默认版本。

2. 添加 GCC 版本到 update-alternatives

命令格式:

bash 复制代码
sudo update-alternatives --install <主路径> <名称> <具体版本路径> <优先级>

示例:

bash 复制代码
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 100
  • /usr/bin/gcc:主路径,表示 gcc 命令的默认路径。
  • gcc:替代项的名称。
  • /usr/bin/gcc-8:具体的 gcc-8 路径。
  • 100:优先级(值越高,优先级越高)。

如果要添加 gcc-9gcc-10

bash 复制代码
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 150
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 200

3. 查看当前 GCC 版本候选项

使用以下命令查看已添加的 gcc 版本:

bash 复制代码
sudo update-alternatives --config gcc

示例输出:

复制代码
有 3 个候选项用于 gcc (提供 /usr/bin/gcc)。

  选择      路径            优先级   状态
------------------------------------------------------------
* 1          /usr/bin/gcc-8   100     自动模式
  2          /usr/bin/gcc-9   150
  3          /usr/bin/gcc-10  200

4. 手动切换 GCC 版本

在上述选项中输入所需版本的编号。例如,选择 gcc-10

bash 复制代码
3

5. 直接设置默认版本

如果希望直接将某个版本设置为默认版本,而不进入选择界面,可以使用 --set 命令:

bash 复制代码
sudo update-alternatives --set gcc /usr/bin/gcc-9

6. 验证当前 GCC 版本

使用以下命令检查当前使用的 gcc 版本:

bash 复制代码
gcc --version

7. 同时管理 G++ 版本

如果还需要管理 g++(C++ 编译器)的版本,可以按照同样的方法:

bash 复制代码
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 150
sudo update-alternatives --config g++

8. 移除某个版本

如果希望移除某个 gcc 版本,可以使用以下命令:

bash 复制代码
sudo update-alternatives --remove gcc /usr/bin/gcc-8

9. 总结

update-alternatives 是一个强大且灵活的工具,适用于管理多个版本的 gcc,方便开发人员在不同版本之间切换,满足不同项目对编译器版本的需求。

常用命令汇总:

功能 命令
添加版本 sudo update-alternatives --install
查看版本列表 sudo update-alternatives --config gcc
设置默认版本 sudo update-alternatives --set gcc /usr/bin/gcc-9
检查当前版本 gcc --version
移除版本 sudo update-alternatives --remove gcc /usr/bin/gcc-8
相关推荐
stormsha4 分钟前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
筏.k1 小时前
grep、wc 与管道符快速上手指南
linux
Johny_Zhao1 小时前
华为MAAS、阿里云PAI、亚马逊AWS SageMaker、微软Azure ML各大模型深度分析对比
linux·人工智能·ai·信息安全·云计算·系统运维
CodeOfCC1 小时前
c语言 封装跨平台线程头文件
linux·c语言·windows
科文小白狼1 小时前
Linux下VSCode开发环境配置(LSP)
linux·vscode·里氏替换原则·lsp
jugt3 小时前
CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found
linux·运维·centos
多多*4 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua
何双新5 小时前
第21讲、Odoo 18 配置机制详解
linux·python·开源
21号 15 小时前
9.进程间通信
linux·运维·服务器
藥瓿亭10 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks