代码之家  ›  专栏  ›  技术社区  ›  codebox

为什么不在64位Ubuntu上安装32位.deb包?

  •  4
  • codebox  · 技术社区  · 15 年前

    我的.deb包构建在32位Ubuntu上,包含用gcc编译的可执行文件,它不会安装在64位版本的操作系统上(错误消息显示“错误的体系结构i386”)。这对我来说很困惑,因为我认为通常32位软件在64位硬件上工作,但反之亦然。

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

    2 回复  |  直到 15 年前
        1
  •  6
  •   ʇsәɹoɈ    15 年前

    DEB安装程序可能拒绝安装您的包,因为它(正确)标记了一个冲突的体系结构:字段。i386代码可以在AMD64计算机上执行,但它要求存在所有适当的依赖项(32位库等)。最好为每个体系结构构建单独的包。

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

    或者,您可以安装一个运行64位操作系统的虚拟机,并在那里为您的辅助体系结构构建。

        2
  •  2
  •   Peter Tillemans    15 年前

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

    通常,大多数32位程序在64位上运行良好。但是,除非您有一台非常老的PC,否则在虚拟机中安装64位小型Debian也非常容易。您可能只需要base+build essentials+dev库。这不会占用很多磁盘空间。如果您可以腾出2G的磁盘空间,只需安装一个桌面Debian即可。

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

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

    如果运行64位Linux,那么32位环境就和mkdebootstrap+linux32+chroot一样简单。