首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当交叉构建32位ARM的C++时,buildrpm失败(从x86-64)

当交叉构建32位ARM的C++时,buildrpm失败(从x86-64)
EN

Stack Overflow用户
提问于 2014-12-06 21:58:31
回答 3查看 2.9K关注 0票数 2

我成功地为Raspberry (ARM架构)编译了C++代码。

这样的二进制文件有一个file命令,返回以下内容:

usr/local/company/product/this: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=9fe73c254b317e239758e4445d12b8441a3cb13e, not stripped

我现在希望生成RPM包(不是.deb包,真正的.RPM包!)。

我尝试过许多--targetspec的文件buildarch组合,但没有成功。尝试armv7larm-linux-gnueabihfarm-linux

rpmbuild返回相同的结果:

代码语言:javascript
复制
Building target platforms: arm-unknown-linux
Building for target arm-unknown-linux
error: No compatible architectures found for build

我正在从一个x86_64 Ubuntu编译。目标架构是arm gnueabihf。

我按如下方式调用rpmbuild:rpmbuild -bb --target armv7l myfile.spec

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-15 14:27:36

在我的RHEL 7计算机上,/usr/lib/rpm/rpmrc包含几个ARM变体:armv3larmv4barmv4larmv4tlarmv5telarmv5tejlarmv6larmv7larmv7hlarmv7hnl。我想您的文件将有类似的选择,因此包括您选择的armv7l选项。

我发现,对于交叉打包,运行rpmbuild --target _target_是不够的。我还必须在build命令周围使用setarch _target_包装器。

票数 2
EN

Stack Overflow用户

发布于 2015-01-09 17:04:02

您可能需要将arm架构(由uname -m显示)添加到/usr/lib/rpm/rpmrc配置中。

票数 0
EN

Stack Overflow用户

发布于 2022-09-23 10:07:30

GOARCH=amd64arm64使用了以下命令:

代码语言:javascript
复制
rpmbuild ... --define="GOARCH ${GOARCH}"

规范文件应包括以下内容

代码语言:javascript
复制
%if %{GOARCH} == "amd64"
BuildArch:      x86_64
%endif
%if %{GOARCH} == "arm64"
BuildArch:      aarch64
%endif
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27337054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档