交叉构建时 buildrpm 失败
Posted
技术标签:
【中文标题】交叉构建时 buildrpm 失败【英文标题】:buildrpm fails when cross building 【发布时间】:2015-02-04 20:56:23 【问题描述】:我成功为 Raspberry Pi(ARM 架构)编译了 c++ 代码。
此类二进制文件有一个文件命令返回以下内容:
usr/local/company/product/this:ELF 32 位 LSB 可执行文件,ARM,EABI5 版本 1 (SYSV),动态链接(使用共享库),适用于 GNU/Linux 2.6.26,BuildID[sha1]= 9fe73c254b317e239758e4445d12b8441a3cb13e,未剥离
我现在希望生成 RPM 包(不是 .deb 包,真正的 .RPM 包!)。 我尝试了许多 --target 和 spec 的文件 buildarch 组合,但没有取得多大成功。 试过 armv7l、arm-linux-gnueabihf、arm-linux ...
rpmbuild 返回相同的结果:
构建目标平台:arm-unknown-linux 为目标 arm-unknown-linux 构建 错误:没有找到兼容的构建架构
我正在从 x86_64 Ubuntu 编译。目标架构是 arm-linux-gnueabihf。
我调用 rpmbuild 如下: rpmbuild -bb --target armv7l myfile.spec
谢谢
【问题讨论】:
【参考方案1】:在我的 RHEL 7 计算机上,/usr/lib/rpm/rpmrc
包含几个 ARM 变体:
armv3l
,armv4b
,armv4l
,armv4tl
,armv5tel
,armv5tejl
,armv6l
,armv7l
,armv7hl
,armv7hnl
。我猜你的文件会有类似的选择,因此包括你选择的armv7l
选项。
我发现对于交叉打包,运行rpmbuild --target _target_
是不够的。我还必须在构建命令周围使用setarch _target_
包装器。
【讨论】:
【参考方案2】:您可能需要将您的 arm 架构(由 uname -m 显示)添加到 /usr/lib/rpm/rpmrc 配置中。
【讨论】:
以上是关于交叉构建时 buildrpm 失败的主要内容,如果未能解决你的问题,请参考以下文章