跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

8 64 位系统环境中的 32 位和 64 位应用程序 编辑源文件

openSUSE® Leap 适用于 64 位平台。 开发者尚未将所有 32 位应用程序移植到 64 位系统。 本章简要概述了在 64 位 openSUSE Leap 平台上对 32 位支持的实现。

openSUSE Leap 对于 AMD64 和 Intel 64 64 位平台 的设计使得现有的 32 位应用程序可以在 64 位环境中“开箱即用”。 这意味着您可以继续使用您喜欢的 32 位应用程序,而无需等待相应的 64 位端口可用。

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

openSUSE Leap 不支持编译 32 位应用程序。 它仅提供对 32 位二进制文件的运行时支持。

8.1 运行时支持 编辑源文件

Important
重要提示:应用程序版本之间的冲突

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

此规则的一个例外是 PAM(可插拔身份验证模块)。 openSUSE Leap 在身份验证过程中将 PAM 用作用户和应用程序之间的中介层。 始终在同时运行 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 位库留出了空间,因此两个版本的的文件名可以保持不变。

如果 32 位子目录下的数据内容不依赖于字大小,则它们不会被移动。 此方案符合 LSB(Linux 标准库)和 FHS(文件系统层次结构标准)。

8.2 内核规范 编辑源文件

AMD64/Intel 64 的 64 位内核提供 64 位和 32 位内核 ABI(应用程序二进制接口)。 后者与相应 32 位内核的 ABI 相同。 这意味着 32 位和 64 位应用程序与 64 位内核之间的通信是相同的。

64 位内核的 32 位系统调用模拟不支持系统程序使用的所有 API。 这取决于平台。 因此,像 lspci 这样的应用程序必须进行编译。

64 位内核只能加载 64 位内核模块。 必须专门为 64 位内核编译 64 位模块。 不可能在 64 位内核中使用 32 位内核模块。

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

某些应用程序需要单独的可加载内核模块。 如果您打算在 64 位系统环境中使用的 32 位应用程序,请联系该应用程序的提供商和 SUSE。 确保此模块的 64 位内核可加载模块和 32 位编译的内核 API 可用。

打印此页面