Linux 如何同时 32 位和 64 位?或者那是在 glibc 中处理的东西?
我运行 CentOS 5.3,它是“64 位”版本;虽然我为 64 位和 32 位构建东西。据我所知,Windows 应该有一个 32 位模拟器。Linux做同样的事情吗?它是在用户空间还是内核空间?
如果 libc 处理它,它是不是有点像模拟器说,我将链接 32 位应用程序,但对内核说 64 位?
Linux 如何同时 32 位和 64 位?或者那是在 glibc 中处理的东西?
我运行 CentOS 5.3,它是“64 位”版本;虽然我为 64 位和 32 位构建东西。据我所知,Windows 应该有一个 32 位模拟器。Linux做同样的事情吗?它是在用户空间还是内核空间?
如果 libc 处理它,它是不是有点像模拟器说,我将链接 32 位应用程序,但对内核说 64 位?
cpu 可以执行 64 位和 32 位指令,内核可以在模式之间切换。唯一的限制是您不能将 32 位程序与 64 位库链接,因此您必须同时安装 32 位和 64 位版本的 libc 等。
没有什么能阻止 CPU 从 64 位切换到 32 位。它只是切换。
您可以拥有 64 位内核,并运行 32 位应用程序。您甚至可以拥有 32 位内核并运行 64 位应用程序(Mac os x)。
但是,您需要它们使用的库也是 32 位或 64 位的,这就是为什么您可能会在 linux 上看到 64 位或 32 位库的名为 lib64 或 lib32 的文件。
因为 x86_64 处理器是基于 x86 技术设计的,所以它们仍然能够支持 32 位程序而无需任何硬件仿真,就像在 PowerPC 或 Sparc 环境中运行 x86 程序所需要的一样。在 Linux 中,您需要做的就是安装必要的软件库来运行 32 位软件。