在ARM架构的Ubuntu 22(Mac M2)上安装gcc-8的方法咨询
在ARM架构的Ubuntu 22(Mac M2)上安装gcc-8的方法咨询
别担心,这个问题一点都不蠢——在新版本Ubuntu上安装旧版编译器本来就容易遇到架构适配的坑,尤其是ARM64(你的Mac M2就是这个架构)这种场景。我来给你一步步说明怎么安装ARM原生的gcc-8:
添加Ubuntu 20.04(Focal)的ARM专属软件源
gcc-8在Ubuntu 22(Jammy)的官方源里已经被移除,但在Ubuntu 20.04(Focal)的源中还存在,而且ports.ubuntu.com是专门为非x86架构(包括ARM64)提供软件包的源,不会拿到Intel的交叉编译包。- 先备份当前的源文件,防止出错:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak - 编辑源文件:
sudo nano /etc/apt/sources.list - 在文件末尾添加以下两行ARM64专属的Focal源:
deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main universe deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-updates main universe - 按
Ctrl+O保存,Ctrl+X退出编辑器。
- 先备份当前的源文件,防止出错:
设置源优先级,避免干扰系统默认包
为了防止Focal源的包自动覆盖Ubuntu 22系统的默认包,我们需要给Focal源设置较低的优先级:- 创建优先级配置文件:
sudo nano /etc/apt/preferences.d/99-focal-pin - 写入以下内容:
Package: * Pin: release n=focal Pin-Priority: 50
这个优先级(50)意味着只有当你明确指定要安装Focal源的包时,apt才会从这个源拉取,不会自动升级系统组件。
- 创建优先级配置文件:
更新缓存并安装gcc-8
现在可以执行安装操作了:- 更新apt缓存:
sudo apt update - 明确指定从Focal源安装gcc-8和g++-8:
sudo apt install gcc-8/focal g++-8/focal
- 更新apt缓存:
验证安装并切换默认版本(可选)
- 检查gcc-8是否安装成功:
如果输出显示gcc版本为8.x,那就说明安装成功了。gcc-8 --version - 如果需要将gcc-8设置为默认编译器,可以使用
update-alternatives工具:
之后可以通过以下命令切换默认的gcc版本:sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 80
按提示输入对应序号即可切换。sudo update-alternatives --config gcc
- 检查gcc-8是否安装成功:
后续注意事项
安装完成后,如果你不需要再从Focal源安装其他旧版包,可以把刚才添加的Focal源行注释掉(在行首加#),避免后续apt更新时出现不必要的兼容问题。
备注:内容来源于stack exchange,提问作者J0sh




