在i386机器上编译amd64的debian软件包?

我有一个i386 Ubuntu的哈代机,和一个amd64 Ubuntu的哈代机。 我想为i386上的amd64机器编译一个debian软件包(aka deb)(因为我没有足够的内存在amd64机器上快速编译)。 如果我在i386机器上做了一个dpkg-buildpackage ,它会为i386产生一个deb,它不能安装在amd64机器上。 有没有办法在i386机器上编译amd64的deb?

所以,有一些解决scheme:

  • 设置一个交叉编译工具链,并使用常规的dpkg-buildpackage来构build你的包。 问题是创build一个工具链不是很简单 。
  • 在您的64位机器上使用32位chroot来编译内容。 显然这是最推荐的方法。 这个博客文章有一个内核编译的例子,但是对于其他软件来说,这个过程是一样的。

这可能比尝试交叉编译更麻烦。 有多种方法可以在32位上模拟64位系统,但您需要支付性能价格。

如果你只是做了一些这样的事情,那么我会说在亚马逊打了一个64位的机器几个小时。 如果你做了很多事情,那么也许会得到一些64位的硬件,或者AWS可能还是很有趣,因为你只需要花费多less钱就可以使用它,而且你可以在需要的时候启动一个构build场。

这可能会给你一些有用的想法: http : //blog.fwbuilder.org/2009/05/building-ubuntu-deb-packages-on-amazon.html

用于各种体系结构和版本的debian系统的图像列表也可能有用: https : //wiki.debian.org/Cloud/AmazonEC2Image

我一直在做Debian的一件事情是使用一个64位的内核和一个32位的用户空间作为我的系统,然后创build一个64位的用户空间的chroot来构buildamd64包。 在Ubuntu中的内核包的结构有点不同,所以我不知道这是可能的还是可以推荐的。

除此之外,干净的解决scheme是使用虚拟机。 QEMU是明显的select,因为它可以模拟任何事情(而且是免费的)。 您可以使用qemubuilder(在Ubuntu中打包)将构build与pbuilder集成。 根据我的经验,这可能有点棘手,但如果您需要重复执行此操作,则可能值得。 对于一些包,只需启动QEMU并手动login即可。

如果你非常冒险,你也可以尝试交叉编译,但这可能更困难,不适用于所有的软件包。 寻找dpkg-cross开始。

或者您如何在Launchpad上创build个人包档案(PPA),并让您的包在那里自动使用。