在x86_64 Ubuntu20.04系统上,在/etc/apt和运行dpkg --add-architecture s390x下进行了一些小的修改后,我可以安装foo-dev:s390x包和gcc-8-s390x-linux-gnu包,然后可以根据foo-dev软件包交叉编译软件。arm64、ppc64le等体系结构也是如此。我构建的二进制文件可以转移到另一个体系结构上的Ubuntu20.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或相关命令来启用包安装吗?
发布于 2021-11-19 22:39:44
RPM有一个“兼容”体系结构的概念,它允许您在i686系统上安装x86_64包。但它没有涵盖国外的体系结构,也不允许您在gcc -m所支持的范围之外交叉编译。
但是,可以使用qemu-user-static和mock为外国架构构建包:准备您的源RPM,然后构建它使用mock,指定体系结构:
mock -r fedora-35-aarch64 package.src.rpmmock将检测到它需要使用仿真,并将使用QEMU来处理chroot。这通常比交叉编译慢,但是您不会遇到主机v.目标二进制文件的问题。
https://unix.stackexchange.com/questions/678306
复制相似问题