Windows 和 Linux 上的 32 位和 64 位

Windows 和 Linux 上的 32 位和 64 位

请原谅我提出一个有点基础且可能很笼统的问题:我曾听说/读到过,在 Windows 上,你可以在 64 位机器上运行 32 位可执行文件,反之亦然;但在 Linux/UNIX 上却不能这样做。希望专家能提供一些详细信息/原因或一些好的参考(链接)?

答案1

您可以在两者上进行此操作。

amd64/x64 CPU 架构可以执行 32 位指令,所以这不是问题。而且 Windows 和 Linux 内核都可以处理 32 位进程。通常归结为共享库。32 位程序需要使用 32 位共享库。如果没有安装所需的 32 位版本的库,运行时动态链接将失败,程序将因缺少库而无法运行。

Microsoft 附带了几乎所有必需库的 32 位版本,因为他们确实希望运行 32 位的东西(哎呀——他们自己的一些程序仍然只以 32 位二进制文​​件的形式发布!)。在 Linux 中,您必须确保安装了 ia32-libs 等软件包才能拥有 32 位版本的通用共享库。

也就是说,在两个 64 位系统上肯定存在无法运行的个别 32 位程序,因为它们依赖于操作系统未附带的一些较为晦涩的共享库。

答案2

您可以使用这两种方式来执行此操作,但特定程序是否可行将取决于库的可用性。

Linux 和 Windows 都有特定于体系结构的共享库(Windows 称之为 DLL)。您无法将 64 位库加载到 32 位进程中,反之亦然。

这两组库通常都可用,并且保存在不同的目录中,以便加载器不会混淆它们(Linux 发行版通常将 64 位库放在 /usr/lib64 或 /lib64 中)

答案3

您无法在 32 位操作系统上运行 64 位应用程序据我所知...

但是 Windows 和 Linux 64 位都可以运行 32 位应用程序。

答案4

您可能需要安装 32 位兼容库才能在 Linux 上运行 32 位应用程序。当然,您需要安装的内容因发行版而异。对于 Ubuntu,您可以使用以下终端命令:

apt-get update
apt-get install ia32-libs

相关内容