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

时间:2010-06-12 06:44:59

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

我的.deb软件包,构建在32位Ubuntu上,包含用gcc编译的可执行文件,不会安装在64位版本的操作系统上(错误信息显示为'错误的架构i386')。这让我感到困惑,因为我认为通常32位软件可以在64位硬件上运行,但反之亦然。

我是否可以使用我的32位计算机生成可以在64位操作系统上安装的.deb文件?是否只是使用适当的编译器标志来生成可执行文件(如果是这样的话),或者.deb文件本身是否特定于一个处理器体系结构?

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

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

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

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

我定期使用virtualbox方法。它简单快捷。

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