如何在 Ubuntu 22.04 上安装 gcc-13 aarch64 交叉编译器?

lor*_*mon 5 ppa gcc cross-compilation arm64

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”,但这似乎不是我可以安装的软件包。

Raf*_*ffa 4

推荐方式

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
Run Code Online (Sandbox Code Playgroud)

这是推荐且最安全的方法。

黑客的方式

否则,这是您自担风险的方式...例如,像您一样添加 PPA ...是的,您已经选择了“自担风险的方式”...阅读此内容(重点是我的):

将此 PPA 添加到您的系统

您可以通过将 ppa:ubuntu... 添加到系统的软件源,使用此 不受信任的 PPA中不受支持的软件包更新您的系统。

...该文本是从您在问题中包含的 Launchpad 链接引用的,它并不限于特定的 PPA(可能享有良好的声誉),但它就是这样。

该 PPA 允许gcc-13在 Ubuntu 22.04 上安装该软件包,方法是基本上将该软件包包含在 Ubuntu 22.04 官方存储库无法满足的依赖项中,当然可能还涉及一些其他工作,例如修改安装后和/或预安装脚本并确保添加的包或其依赖项不会与现有的基本系统包等发生冲突。

对于Ubuntu 23.04/23.10 官方存储库中也提供的gcc-13gcc-13-aarch64-linux-gnu,人们可能会思考是否可以在 Ubuntu 22.04 系统上从 23.04/23.10 存储库安装它们?...嗯,是的,当然有可能(对于这两个),并且它应该使“自担风险”区域更具吸引力,因为这些存储库是官方且值得信赖的,但不受支持的部分仍然适用。

无论如何,我已经快速跟踪了这两个包及其依赖项,然后在 Ubuntu 22.04 系统上成功地从 Ubuntu 23.10 的官方存储库安装了这两个包,并且没有任何明显的缺点 AFAIK ...毕竟 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
Run Code Online (Sandbox Code Playgroud)

二、更新包列表:

sudo apt update
Run Code Online (Sandbox Code Playgroud)

第三,安装gcc-13gcc-13-aarch64-linux-gnu

sudo apt install gcc-13 gcc-13-aarch64-linux-gnu
Run Code Online (Sandbox Code Playgroud)

第四,删除该临时存储库:

sudo rm /etc/apt/sources.list.d/temporary-repository.list
Run Code Online (Sandbox Code Playgroud)

最后,更新缓存的包列表:

sudo apt update
Run Code Online (Sandbox Code Playgroud)

注意

  • 您可能需要首先gcc-13从该 PPA 中删除已安装的软件包以及 PPA 本身,以避免可能的依赖项版本不匹配。

  • 您需要按版本号运行这些版本,gcc-13 -vaarch64-linux-gnu-gcc-13 -v不仅仅是版本号gcc,或者您可以使用Ubuntu 替代系统来选择默认版本。