我有一个软件包(本例中为 Dymo CUPS 驱动程序),需要将其编译为 .deb 文件以包含在私有网络的存储库中。源代码本身足够独立于体系结构,因此它可以在 32 位和 64 位上编译。我正在使用它debhelper
来构建软件包,并已成功为本机体系结构构建了软件包。
大多数机器运行 Precise 64 位,但有些机器运行 Precise 32 位。当前构建的机器是 64 位。我希望能够“交叉编译”包并从 64 位包生成 32 位包。
我尝试过的:
- 将“-a”或“--architecture”标志添加到
fakeroot debian/rules binary
- 失败,因为它不理解该参数(我必须从 dpkg 或其他命令中复制它) - 添加CFLAGS等供给
override_dh_auto_configure
-构建为 32 位,但打包并定义依赖项为 64 位包debian/rules
-m32
- 安装
dpkg-cross
和运行fakeroot debian/rules binary-cross
(基于这些交叉编译指令) - 失败,因为二元交叉不是标准dh
命令
我不能尝试的事情:
- Launchpad/PPA/任何其他外部构建服务 - 一切都需要成为我们基础设施的一部分
有没有办法debhelper
在 64 位机器上构建 32 位 .deb 文件?如果可以,怎么做?
答案1
debuild -ai386
应该可以正确设置所有东西,但这取决于是否安装了正确的多架构构建依赖项;使用较新版本的sbuild
(恐怕比 precise 的版本更新)会更容易,并且它确实取决于您使用的所有库是否已转换为多架构。请参阅https://wiki.ubuntu.com/CrossBuilding了解详情。