Ubuntu 24.04 通过 update-alternatives 切换GCC版本

在 Ubuntu 中编译项目, 会遇到项目依赖于某个特定版本 GCC 的情况, 例如 Ubuntu 24.04 的默认 GCC 版本是 13, 但是有一些项目需要 GCC11才能正常编译, 在 Ubuntu 24.04 默认的环境下编译会报错. 这时候可以通过 update-alternatives 切换GCC版本.

all 展示全部

--all参数会展示现在系统中所有的可替换版本设置(并设置), 这个列表很长

sudo update-alternatives --all

install 创建

首先要用 update-alternatives --install 命令创建一个 gcc 的替换列表, 并把这些可用的版本都加进去.

update-alternatives --install [link] [name] [path] [priority]

priority 数字越大优先级越高, 最高优先级的会成为自动 auto 选择的版本

例如

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 11
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 11

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 12

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13

list, display, query 查看

查看可以通过 --list, --display, --query命令

update-alternatives --list gcc
update-alternatives --display gcc
update-alternatives --query gcc

config, set 选择

通过 config 选择需要的 gcc 版本

sudo update-alternatives --config gcc

会出现选择菜单

There are 2 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path             Priority   Status
------------------------------------------------------------
* 0            /usr/bin/gcc-13   13        auto mode
  1            /usr/bin/gcc-11   11        manual mode
  2            /usr/bin/gcc-13   13        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

通过 set 直接选择

sudo update-alternatives --set gcc /usr/bin/gcc-12
sudo update-alternatives --set g++ /usr/bin/g++-12

remove, remove-all 删除

# 删除1项
sudo update-alternatives --remove gcc /usr/bin/gcc-7
# 删除整个gcc
sudo update-alternatives --remove-all gcc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值