跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / 管理指南 / 系统 / 64 位系统环境中的 32 位和 64 位应用程序
适用范围 SUSE Linux Enterprise Server 12 SP5

14 64 位系统环境中的 32 位和 64 位应用程序

SUSE® Linux Enterprise Server 可用于多种 64 位平台。但是这并不表示内含的所有应用程序都已移植到 64 位平台上。SUSE Linux Enterprise Server 支持在 64 位系统环境中使用 32 位应用程序。本章简单介绍了如何在 64 位 SUSE Linux Enterprise Server 平台上实现这种支持。

用于 64 位平台 IBM POWER、IBM Z 和 AMD64/Intel 64 的 SUSE Linux Enterprise Server 可让现有的 32 位应用程序无需额外配置 即可在 64 位环境中运行。相应的 32 位平台为:用于 POWER 的 ppc 和用于 AMD64/Intel 64 的 x86。。这种支持意味着您可以继续使用所需的 32 位应用程序,而无需等待对应的 64 位端口可用。当前的 POWER 系统以 32 位模式运行大多数应用程序,但您可以运行 64 位应用程序。

注意
注意:不支持构建 32 位应用程序

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 内核规范

AMD64/Intel 64、IBM POWER 和 IBM Z 适用的 64 位内核提供 64 位和 32 位两种内核 ABI(应用程序二进制接口)。后者与对应的 32 位内核的 ABI 相同。这意味着 32 位应用程序可以以与 32 位内核交流的相同方式与 64 位内核进行交流。

64 位内核系统调用的 32 位仿真不支持系统程序使用的某些 API。这取决于平台。出于此原因,少数应用程序(例如 lspci)必须在非 POWER 平台上编译为 64 位程序才能正常运行。在 IBM Z 上,并非所有 ioctl 都可在 32 位内核 ABI 中使用

64 位内核只能装载专门为此内核编译的 64 位内核模块。不能使用 32 位内核模块。

提示
提示:内核可装载模块

某些应用程序需要单独的内核可装载模块。如果要在 64 位系统环境中使用此类 32 位应用程序,请与此应用程序的提供商和 SUSE 联系以确保内核可装载模块的 64 位版本和内核 API 的 32 位编译版本可用于此模块。