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

我的.deb软件包,build立在32位Ubuntu上,包含用gcc编译的可执行文件,不会安装在64位版本的操作系统上(错误信息是'错误的架构i386')。 这让我感到困惑,因为我认为一般的32位软件在64位硬件上工作,反之则不然。

是否有可能生成一个.deb文件,我可以使用我的32位机器在64位操作系统上安装? 只是使用适当的编译器标志来生成可执行文件(如果是的话),还是.deb文件本身在某种处理器体系结构中的特定性?

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

是的,你可以在你的32位机器上构建64位。 这就是所谓的交叉编译,它需要你为此创建一个构建环境。 要开始,您可能需要查看dpkg-cross和apt-cross工具。

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

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

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

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

我经常使用virtualbox方法。 这很容易和快速。

如果你运行64位的linux做一个32位的环境就像mkdebootstrap + linux32 + chroot一样简单。