14 64 位系统环境中的 32 位和 64 位应用程序 #
SUSE® Linux Enterprise Server 可用于多种 64 位平台。但是这并不表示内含的所有应用程序都已移植到 64 位平台上。SUSE Linux Enterprise Server 支持在 64 位系统环境中使用 32 位应用程序。本章简单介绍了如何在 64 位 SUSE Linux Enterprise Server 平台上实现这种支持。
用于 64 位平台 POWER、z Systems 和 AMD64/Intel 64 的 SUSE Linux Enterprise Server 可让现有的 32 位应用程序“无需额外配置” 即可在 64 位环境中运行。相应的 32 位平台为:用于 POWER 的 ppc 和用于 AMD64/Intel 64 的 x86。。这种支持意味着您可以继续使用所需的 32 位应用程序,而无需等待对应的 64 位端口可用。当前的 POWER 系统以 32 位模式运行大多数应用程序,但您可以运行 64 位应用程序。
SUSE Linux Enterprise Server 不支持编译 32 位应用程序,只提供 32 位二进制文件的运行时支持。
14.1 运行时支持 #
如果某个应用程序在 32 位和 64 位环境中都可用,则两个版本的并行安装必定会导致出现问题。在这种情况下,在两个版本中选一个,然后安装并使用这一版本。
此规则的一个例外是 PAM(可插入身份验证模块)。SUSE Linux Enterprise Server 在身份验证过程中使用 PAM 作为在用户和应用程序之间充当媒介的层。在另外还运行 32 位应用程序的 64 位操作系统上,始终需要安装两个版本的 PAM 模块。
若要正确执行,每个应用程序都需要一系列库。不巧的是,这些库的 32 位和 64 位版本的名称是相同的。必须通过另一种方法对它们加以区分。
为了保持与 32 位版本的兼容性,这些库在系统中的储存位置与在 32 位环境中相同。在 32 位和 64 位环境中,libc.so.6
的 32 位版本都位于 /lib/libc.so.6
下。
所有 64 位库和对象文件都位于名为 lib64
的目录中。通常预计会在 /lib
和 /usr/lib
下找到的 64 位对象文件,现在可以在 /lib64
和 /usr/lib64
下找到。这意味着 /lib
和 /usr/lib
下有储存 32 位库的空间,因此两个版本的文件名都可以保持不变。
如果 32 位 /lib
目录的子目录包含的数据内容不依赖于字大小,则不移动这些目录。此方案符合 LSB(Linux 标准库)和 FHS(文件系统层次标准)。
14.2 内核规范 #
AMD 64/Intel 64、POWER 和 z Systems 适用的 64 位内核提供 64 位和 32 位两种内核 ABI(应用程序二进制接口)。后者与对应的 32 位内核的 ABI 相同。这意味着 32 位应用程序可以以与 32 位内核交流的相同方式与 64 位内核进行交流。
64 位内核系统调用的 32 位仿真不支持系统程序使用的某些 API。这取决于平台。出于此原因,少数应用程序(例如 lspci
)必须在非 POWER 平台上编译为 64 位程序才能正常运行。在 IBM z Systems 上,并非所有 ioctl 都在 32 位内核 ABI 中可用。
64 位内核只能装载专门为此内核编译的 64 位内核模块。不能使用 32 位内核模块。
某些应用程序需要单独的内核可装载模块。如果要在 64 位系统环境中使用此类 32 位应用程序,请与此应用程序的提供商和 SUSE 联系以确保内核可装载模块的 64 位版本和内核 API 的 32 位编译版本可用于此模块。