在 x86_64 Ubuntu 20.04 系统上,在/etc/apt
和 running下进行一些小的修改后dpkg --add-architecture s390x
,我可以安装该foo-dev:s390x
包并安装该gcc-8-s390x-linux-gnu
包,然后我可以针对该包交叉编译软件foo-dev
。arm64
、等架构也是如此ppc64le
。我构建的二进制文件可以接管到其他架构上的 Ubuntu 20.04 平台,并且它们可以按预期运行。
鉴于 RHEL 8 也在这些架构上运行,我希望我也能做同样的事情。它看起来确实是一个支持多架构的操作系统。例如,有 32 位和 64 位 x86 软件包,例如openssl-devel
:
openssl-devel.x86_64 : Files for development of applications which will use OpenSSL
openssl-devel.i686 : Files for development of applications which will use OpenSSL
并且它们可以同时安装。所以我希望它会像一样简单yum install openssl-devel.arm64
或相似。
但经过相当长的一段时间搜索后,我无法弄清楚我需要做什么才能允许在 RHEL 8 上安装s390x
、ppc6el4
、等的开发包或交叉编译器。arm64
这可能吗?是否有一些文档解释了如何进行必要的存储库配置以启用这些其他架构作为开发目标?有人可以提供必要的yum
//或相关命令来启用软件包安装吗dnf
?rpm
答案1
RPM 有一个“兼容”架构的概念,它允许您i686
在系统上安装软件包x86_64
。但它不涵盖外部体系结构,也不允许您进行超出gcc -m
.
但是,可以使用qemu-user-static
和为外部架构构建包mock
:准备源 RPM,然后构建它使用mock
,指定架构:
mock -r fedora-35-aarch64 package.src.rpm
mock
将检测到它需要使用仿真,并将使用 QEMU 来处理 chroot。这通常会比交叉编译慢,但您不会遇到主机与目标二进制文件的问题。