Linux 内核现在需要 gcc v13 才能编译,但 Ubuntu 22.04 只能使用 gcc v11。我找到了通过 PPA 安装最新原生 gcc-13 的说明(https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/ppa),但我看不到任何安装 v13 aarch64 (又名 ARM64) 交叉编译器的方法。PPA 说它包含“gcc-13-cross”,但这似乎不是我可以安装的软件包。
答案1
推荐方法
Ubuntu 23.04既有你需要的软件包,也有你需要的版本gcc-13
和gcc-13-aarch64-linux-gnu
在[security]
[universe]
存储库中,而 Ubuntu 23.10 在[main]
存储库中也有它们...所以,我的建议自然是将您的系统升级到 Ubuntu 23.04 甚至 23.10,然后安装您想要的软件包,如下所示:
sudo apt update && sudo apt install gcc-13 gcc-13-aarch64-linux-gnu
这是推荐的、最安全的方法。
黑客方法
否则,这就是风险自负方式...例如,像你一样添加 PPA...是的,你已经选择了“自行承担风险的方式”...阅读此文(重点是我的):
将此 PPA 添加到你的系统
您可以使用以下方式更新系统不受支持的软件包由此 不受信任的 PPA通过将 ppa:ubuntu... 添加到系统的软件源中。
... 该文本引用自您在问题中包含的 Launchpad 链接,并且它不仅限于特定的 PPA(可能享有良好的声誉),但它就是这样。
该 PPA 支持gcc-13
在 Ubuntu 22.04 上安装该软件包,本质上是通过包含该软件包及其依赖项来实现的,而这些依赖项无法从 Ubuntu 22.04 官方存储库中满足,当然可能还涉及一些其他工作,如修改安装后和/或预安装脚本,并确保添加的软件包或其依赖项不会与现有的基本系统软件包冲突等等。
对于gcc-13
和gcc-13-aarch64-linux-gnu
,它们也在 Ubuntu 23.04/23.10 官方存储库中提供,人们可能会考虑在 Ubuntu 22.04 系统上从 23.04/23.10 存储库安装它们的可能性?... 嗯,当然可以(对于这两个) 并且它应该使“自行承担风险”区域更具吸引力,因为这些存储库是官方的和值得信赖的,但不受支持的部分仍然适用。
无论如何,我快速追踪了这两个包及其依赖项,然后在 Ubuntu 22.04 系统上成功地从 Ubuntu 23.10 的官方存储库安装了这两个包,据我所知没有任何明显的缺点......毕竟 GNU C 编译器对于 Ubuntu 的功能来说不是必需的,而是作为手动安装的可选包提供的。
然而,很可能非常有可能大问题等待如果你不够小心,即你必须确保没有通过任何方式安装该存储库中的其他软件包,包括自动更新,因此请关闭所有这些并完全更新您的系统第一的,然后按照所有说明进行操作恰恰(当然,风险仍由您自行承担)...如果安装了其他软件包,它们可能会严重破坏您的系统,甚至无法进行任何适用的修复,当然,这与您的 PPA 安装的软件包一样不受支持...所以,我们不会为任何软件包提供任何支持。
不用说,我不喜欢这样,但你似乎需要它,所以我写了它。
基本上,这个想法是添加包含这两个包的官方 Ubuntu 存储库,刷新本地缓存源列表,安装这两个包,然后立即从系统中删除添加的存储库,如下所示:
首先,添加存储库:
echo "deb http://cz.archive.ubuntu.com/ubuntu mantic main" |
sudo tee /etc/apt/sources.list.d/temporary-repository.list
二、更新软件包列表:
sudo apt update
第三,仅有的安装gcc-13
并gcc-13-aarch64-linux-gnu
:
sudo apt install gcc-13 gcc-13-aarch64-linux-gnu
第四,删除临时存储库:
sudo rm /etc/apt/sources.list.d/temporary-repository.list
最后,更新你的缓存包列表:
sudo apt update
注意
您可能需要先从
gcc-13
该 PPA 中删除已安装的软件包以及 PPA 本身,以避免可能的依赖版本不匹配。您需要按版本号运行它们,即
gcc-13 -v
和aarch64-linux-gnu-gcc-13 -v
而不仅仅是gcc
,或者您可以使用Ubuntu 替代系统选择默认版本。