如何将go代码打包为arm RPM?

如何将go代码打包为arm RPM?,arm,cross-compiling,rpm,rpmbuild,Arm,Cross Compiling,Rpm,Rpmbuild,我有一个go项目,我正在OSX上构建。我使用docker运行linux编译器并使用GOARCH=arm64生成arm代码,从而为arm linux编译了它。现在我想把它打包成RPM 问题是我不知道如何让rpmbuild给我一个arm包。我已尝试设置--target arm,--target arm64,--target arm test linux,以及--target arm64 test linux 所有这些都会产生相同的结果 文件project.arm.rpm=>project.arm.r

我有一个go项目,我正在OSX上构建。我使用docker运行linux编译器并使用GOARCH=arm64生成arm代码,从而为arm linux编译了它。现在我想把它打包成RPM

问题是我不知道如何让rpmbuild给我一个arm包。我已尝试设置
--target arm
--target arm64
--target arm test linux
,以及
--target arm64 test linux

所有这些都会产生相同的结果

文件project.arm.rpm
=>
project.arm.rpm:rpm v3.0 bin noarch


如何让它识别体系结构而不是生成noarch rpm?

使用spec文件中的
BuildArch
选项:

BuildArch: arm64
这将创建
project.src.rpm
。然后:

sudo dnf install qemu-user-static
mock -r fedora-33-aarch64 project.src.rpm
哪个将使用此功能: 对于最新版本的Mock,您甚至不需要指定自动检测到的
--forcearch

如果省略
BuildArch
,那么它将使用您用作Mock参数的chroot自动设置

顺便说一句,这里是关于包装作为RPM的一般指导

sudo dnf install qemu-user-static
mock -r fedora-33-aarch64 project.src.rpm