是否可以使用 debhelper 交叉编译 .deb 文件?怎样做?

是否可以使用 debhelper 交叉编译 .deb 文件?怎样做?

我有一个软件包(本例中为 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了解详情。

相关内容