【问题标题】:How can I build a 32bit (i386) .deb on a 64bit box?如何在 64 位机器上构建 32 位 (i386) .deb?
【发布时间】:2011-12-17 21:44:20
【问题描述】:

我的应用程序可以使用 -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。

这可能吗?我应该在哪里寻找说明?

【问题讨论】:

    标签: c ubuntu 32bit-64bit deb


    【解决方案1】:

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

    debuild -ai386
    

    但是,在某些情况下这通常不起作用,在这些情况下,您将需要 pbuilder。 pbuilder 在 chroot-ed 环境中构建一个干净的 Debian/Ubuntu 系统。 man pbuilder 是一个很好的介绍。要开始,您需要:

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

    【讨论】:

    • 从头开始构建一个新包:pdebuild --architecture i386 在包含 debian/ 目录的目录中。
    【解决方案2】:

    首先使用 -ai386 选项调用 debuild,这将 更改构建包的架构。

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

    【讨论】:

      【解决方案3】:

      您不会做任何与构建 64 位 .deb 不同的事情。除非您包含 32 位版本的应用程序。

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

      【讨论】:

      • 不正确。 Debian 软件包包括明确指定的软件包体系结构。
      • @Michael,所以它是用似乎没有文档的选项明确指定的?
      • 实际上,包控制文件的结构是有据可查的。包括Architecture 选项。
      • @Michael,是的,我正在阅读另一个提到 -ai386 的答案,但实际上找不到它。指定架构是构建 deb 包的一部分,无论您是在 amd64 还是 i386 上,架构选择仍然是该过程的一部分。
      • 没错。这似乎是 OP 对此有疑问的过程的一部分。
      猜你喜欢
      • 2014-11-27
      • 2013-11-07
      • 1970-01-01
      • 2012-03-08
      • 2012-07-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2016-12-02
      相关资源
      最近更新 更多