是否可以编译两次并仅通过编写debian / rules来构建单独的包?

时间:2018-01-29 13:57:22

标签: c++ linux qt debian dpkg

让我详细说明一下我试图完成的一些细节。

我的最终目标是拥有两个debian软件包:一个包含为x86构建的二进制文件,另一个包含为ARM构建的二进制文件。在debian / control中,我定义了两个不同的包,而且这两个包的架构当前都设置为“any”。

我尝试按照https://wiki.debian.org/PkgSplit上的说明进行操作,并查看debhelper(http://www.fifi.org/doc/debhelper/examples/rules.multi2)的rules.multi2示例,但到目前为止没有运气。

源是一个Qt项目,它将同时部署到x86和ARM。

我使用dpkg-buildpackage成功构建,但无论我如何尝试,我的源代码只编译一次。

达到我的目标的理想方式是,“仅仅”足以在debian /规则中输入正确的信息以便工作,还是我必须采取另一种方法?我不确定这是否可行;我刚开始走错了路(我是debian包装世界的新手)。

(我故意不在现阶段包括我的debian / control和debian / rules,如果需要,我会提供进一步的细节,因为它们在这个阶段有点乱)。

编辑: 我通过这条评论引导了PkgSplit https://askubuntu.com/questions/246718/change-environment-variables-in-debian-rules-according-to-debian-control-targets/908351#908351 但对我来说,答案有点神秘,所以非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

没有

单次运行dpkg-buildpackage将为单个体系结构创建二进制包(amd64i386,或armhfs390x或其他)

只需多次调用dpkg-buildpackage来构建多个架构():

dpkg-buildpackage -rfakeroot
dpkg-buildpackage -rfakeroot --host-arch i386
dpkg-buildpackage -rfakeroot --host-arch armhf

这将创建(最多)3个包:一个本机架构(最有可能:amd64),一个用于x86_32(又名i386)和一个用于树莓( armhf)。

顺便说一下, PkgSplit 文档讨论了为同一架构创建多个软件包的问题。例如当你有一个库时,你通常希望将它分成库部分(安装libfoo.so.1)和开发部分(安装头文件)。