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

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

SUSE® Linux Enterprise Server 可用于多种 64 位平台。开发商尚未将所有 32 位应用程序移植到 64 位系统。本章简要概述了如何在 64 位 SUSE Linux Enterprise Server 平台上实现 32 位支持。

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

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

SUSE Linux Enterprise Server 不支持编译 32 位应用程序。它只为 32 位二进制文件提供运行时支持。

20.1 运行时支持

重要
重要:不同应用程序版本之间的冲突

如果某个应用程序同时适用于 32 位和 64 位环境,安装这两个版本可能会导致出现问题。在这种情况下,请决定要安装哪一个版本,以避免潜在的运行时错误。

此规则的一个例外是 PAM(可插入身份验证模块)。SUSE Linux Enterprise Server 在身份验证过程中使用 PAM 作为在用户和应用程序之间充当媒介的层。在同时运行了 32 位应用程序的 64 位操作系统上,请始终安装 32 位和 64 位 PAM 版本。

每个应用程序都需要一系列的库才能正常执行。由于这些库的 32 位和 64 位版本的名称相同,因此必须以另一种方式将它们彼此区分开来。

为了与 32 位版本保持兼容,64 位和 32 位库将存储在同一位置。在 32 位和 64 位环境中,libc.so.6 的 32 位版本都位于 /lib/libc.so.6 下。

所有 64 位库和对象文件都位于名为 lib64 的目录中。以往通常位于 /lib/usr/lib 下的 64 位对象文件现在位于 /lib64/usr/lib64 下。这意味着 /lib/usr/lib 下有可用于存储 32 位库的空间,因此两个版本的文件名都可以保持不变。

如果 /lib 下的 32 位子目录的数据内容与字词大小无关,则不会移动这些子目录。此方案符合 LSB(Linux 标准库)和 FHS(文件系统层次标准)的要求。

20.2 内核规范

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

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

64 位内核只能加载 64 位内核模块。必须专门为 64 位内核编译 64 位模块。无法将 32 位内核模块与 64 位内核搭配使用。

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

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