如何在64位系统上构建32位(i386).deb包?

24
我有一些应用程序,使用-m32开关(在DMD和/或GCC中)编译成功,生成:
appname: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked
(uses shared libs), for GNU/Linux 2.6.15, not stripped

我创建的源代码包在32位和64位Ubuntu上都可以正常运行,以构建适当的二进制.debs文件。

我想在同一台用于生成64位.deb的64位机器上生成i386 .deb。

这是可能的吗?我应该在哪里查找指示?

3个回答

19

答案取决于您的构建复杂性。当64位用户空间工具足以进行构建时,只需通过 -a 指定架构。

debuild -ai386

然而,有时候这种方法并不奏效,在这种情况下,你需要使用 pbuilder。pbuilder 在一个 chroot 环境中构建一个干净的 Debian/Ubuntu 系统。man pbuilder 是一个很好的入门参考。为了开始使用,你需要:

sudo pbuilder --create --architecture i386
sudo pbuilder --build mypackage.dsc

1
在包含debian/目录的目录中,使用命令pdebuild --architecture i386从头开始构建一个新的软件包。 - Jahid

3

从使用带有-ai386选项的debuild开始,这将更改软件包构建的架构。

当然,您必须确保软件包包含应用程序的i386版本。


-2

构建64位.deb包时,与平常无异。唯一不同之处在于您需要包含32位应用程序的构建。

控制文件指定了架构,请确保选择正确的架构。


1
不是这样的。Debian 包包含了包的架构,而这是明确指定的。 - Michael Mior
@Michael,所以它是明确指定的选项,似乎没有任何文档? - he_the_great
实际上,软件包控制文件的结构非常好文档化,包括 Architecture 选项。 - Michael Mior
@Michael,是的,我正在阅读另一个回答,其中提到了-ai386,但实际上找不到它。指定体系结构是构建deb软件包的一部分,无论您使用amd64还是i386,选择体系结构仍然是该过程的一部分。 - he_the_great
没错。而且它似乎是原帖提出问题的一部分。 - Michael Mior

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接