6

Linux 如何同时 32 位和 64 位?或者那是在 glibc 中处理的东西?

我运行 CentOS 5.3,它是“64 位”版本;虽然我为 64 位和 32 位构建东西。据我所知,Windows 应该有一个 32 位模拟器。Linux做同样的事情吗?它是在用户空间还是内核空间?

如果 libc 处理它,它是不是有点像模拟器说,我将链接 32 位应用程序,但对内核说 64 位?

4

3 回答 3

5

cpu 可以执行 64 位和 32 位指令,内核可以在模式之间切换。唯一的限制是您不能将 32 位程序与 64 位库链接,因此您必须同时安装 32 位和 64 位版本的 libc 等。

于 2009-10-01T14:37:12.377 回答
3

没有什么能阻止 CPU 从 64 位切换到 32 位。它只是切换。

您可以拥有 64 位内核,并运行 32 位应用程序。您甚至可以拥有 32 位内核并运行 64 位应用程序(Mac os x)。

但是,您需要它们使用的库也是 32 位或 64 位的,这就是为什么您可能会在 linux 上看到 64 位或 32 位库的名为 lib64 或 lib32 的文件。

于 2009-10-01T14:29:18.257 回答
1

因为 x86_64 处理器是基于 x86 技术设计的,所以它们仍然能够支持 32 位程序而无需任何硬件仿真,就像在 PowerPC 或 Sparc 环境中运行 x86 程序所需要的一样。在 Linux 中,您需要做的就是安装必要的软件库来运行 32 位软件。

于 2009-10-01T14:31:36.160 回答