【问题标题】:Why doesn't a 32bit .deb package install on 64bit Ubuntu?为什么 32 位 .deb 包不安装在 64 位 Ubuntu 上?
【发布时间】:2011-03-02 22:47:35
【问题描述】:

在 32 位 Ubuntu 上构建并包含使用 gcc 编译的可执行文件的我的 .deb 包无法安装在 64 位版本的操作系统上(错误消息显示“错误的架构 i386”)。这让我很困惑,因为我认为通常 32 位软件可以在 64 位硬件上运行,反之则不然。

我是否可以使用我的 32 位计算机生成可以安装在 64 位操作系统上的 .deb 文件?仅仅是使用适当的编译器标志来生成可执行文件(如果是的话,它们是什么),还是 .deb 文件本身以某种方式特定于一种处理器架构?

【问题讨论】:

    标签: linux gcc debian packages 32bit-64bit


    【解决方案1】:

    deb 安装程序可能拒绝安装您的包,因为它(正确地)标有冲突的 Architecture: 字段。 i386 代码可以在 amd64 机器上执行,但它要求存在所有适当的依赖项(32 位库等)。最好为每个架构构建单独的包。

    是的,您可以在 32 位计算机上构建 64 位。它被称为交叉编译,它要求您为此目的创建一个构建环境。要开始使用,您可能需要查找 dpkg-cross 和 apt-cross 工具。

    或者,您可以只安装一个运行 64 位操作系统的虚拟机,并在那里为您的二级架构构建。

    【讨论】:

      【解决方案2】:

      架构只是 debian 包配置文件中的一个选项。默认情况下,它使用来自 uname 的那些。您可以覆盖它,但有一种更简单的方法。

      一般来说,大多数 32 位程序可以在 64 位上正常运行。但是,除非你有一台很旧的 PC,否则在 virtualbox 虚拟机中安装一个迷你 64 位 debian 也很容易。您可能只需要基础 + 构建要素 + 开发库。这不会占用大量磁盘空间。如果您可以腾出 2G 磁盘空间,只需安装桌面 debian。

      有更多选项可以进行交叉编译,自动化程度各不相同。

      我经常使用 virtualbox 方法。它既简单又快速。

      如果您运行 64 位 linux,则制作 32 位环境就像 mkdebootstrap + linux32 + chroot 一样简单。

      【讨论】:

      • 一切皆有可能。我已经在单独的目录中看到了与架构相关的东西的解决方案,这些目录在 postinst 中被选择并用符号链接放置在它们的位置。您还可以将包拆分为共享包和独立的体系结构相关 pkg。所有这些选项都是“非标准做法”,会导致返工和复杂的程序。到目前为止,创建 2 个包是最好的选择。
      猜你喜欢
      • 2014-07-21
      • 2015-09-14
      • 2014-01-20
      • 2014-03-14
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多