在 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