为什么Arm64版本的Ubuntu没有交叉编译器?

为什么Arm64版本的Ubuntu没有交叉编译器?

在 Amd64 版本的 Ubuntu 中,有gcc-{version}-{architecture}-linux-gnu可用于为不同架构构建二进制文件的软件包,其中,构建的二进制文件可以使用进行测试qemu-user。但在 Arm64 版本的 Ubuntu 中,没有这样的交叉编译器。

Q1:为什么没有这样的包(截至 20.04 TLS)?

接下来,我想使用 Clang/LLVM 工具链来代替 GCC 工具链来构建二进制文件。问题 2:测试为以下平台构建的程序需要哪些必要的库包:Amd64、AArch64、PowerPC64、Sparc64?最好是虚拟包。

答案1

与主gcc软件包不同,GCC 交叉编译器位于universe存储库中,这意味着它们由社区以“最大努力”的方式维护。主gcc软件包来自main存储库,由 Ubuntu 完全支持。

我认为需要的库包跟踪 PowerPC64 架构的 GCC 交叉编译器的依赖关系,似乎由以下内容组成:

  • libgcc-${ver_of_gcc}-dev-${arch}-cross
  • libc-dev-${arch}-cross# 这是一个虚拟包。

如果需要进行 C++ 开发:

  • libstdc++-dev-${arch}-cross# 这是一个虚拟包。

正如 OP 中所述,使用了 Clang/LLVM 工具链。该工具链附带 Clang C/C++/Obj-C 编译器,并且一个功能正常的连接器


此外

可以启用“Multiarch”并通过用户空间 QEMU 程序在 arm64 上运行为 x86_64 构建的交叉编译器。相关文章:https://wiki.debian.org/Multiarch/HOWTO

相关内容