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

目录

19.1. 运行时支持
19.2. 软件开发
19.3. Biarch 平台上的软件编译
19.4. 内核规范

SUSE Linux EnterpriseŽ 可用于多个 64 位平台。但是这并不表示内含的所有应用程序都已移植到 64 位平台上。 SUSE Linux Enterprise 支持在 64 位系统环境中使用 32 位应用程序。 本章简单介绍了如何在 64 位 SUSE Linux Enterprise 平台上实现这种支持。 它解释了如何执行 32 位应用程序(运行时支持)以及应该如何编译 32 位应用程序以使它们既可以在 32 位系统环境中运行,又可以在 64 位系统环境中运行。 另外,您还可以了解有关内核 API 的信息和 32 位应用程序如何在 64 位内核下运行的解释。

[Note]IBM System z 上的 31 位应用程序:

IBM System z 上的 s390 使用 31 位环境。以下对 32 位应用程序的参照也适用于 31 位应用程序。

用于 64 位平台 ia64、ppc64、s390x 和 x86_64 的 SUSE Linux Enterprise 被设计为可以让现有 32 位应用程序无需进行额外设置即可在 64 位环境中运行。相应的 32 位平台是 x86(对于 ia64)、ppc(对于 ppc64)、s390(对于 s390x)、x86(对于 x86_64)。这种支持意味着您可以继续使用所需的 32 位应用程序,而无需等待对应的 64 位端口可用。当前的 ppc64 系统以 32 位方式运行大多数应用程序,但您可以运行 64 位应用程序。

运行时支持

[Important]应用程序版本之间的冲突

如果某个应用程序在 32 位和 64 位环境中都可用,则两个版本的并行安装必定会导致出现问题。 在这种情况下,在两个版本中选一个,然后安装并使用这一版本。

若要正确执行,每个应用程序都需要一系列库。 不巧的是,这些库的 32 位和 64 位版本的名称是相同的。 必须通过另一种方法对它们加以区分。

同样的方法用于 64 位平台 ppc64、s390x 和 x86_64:为了保留与 32 位版本的兼容性,库在系统中的储存位置与在 32 位环境中相同。在 32 位和 64 位环境中,libc.so.6 的 32 位版本都位于 /lib/libc.so.6 下。

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

如果对象目录的数据内容不取决于此大小,则不移动 32 位 /lib 目录的任何子目录。 例如,X11 字体仍位于 /usr/X11R6/lib/X11/fonts 下的常规位置。 此方案符合 LSB(Linux 标准库)和 FHS(文件系统层次标准)。

►ipf: 用于 ia64 的 64 位库位于标准 lib 目录。这种情况下,既没有 lib64 目录,也没有 lib32 目录。ia64 将在仿真下执行 32 位 x86 代码。一组基本库将安装在 /emul/ia32-linux/lib/emul/ia32-linux/usr/X11R6/lib 中。