AIX 二进制兼容性的限制

为了在任何平台上实现二进制兼容性,应用程序必须仅使用可移植的编程技术。

如果您在 AIX 操作系统的某个发行版中创建二进制代码,那么您无法在较低版本的 AIX 操作系统中运行该二进制代码。 例如,如果在 AIX® V 7.1上创建了二进制代码,那么不能在 AIX V 6.1上运行相同的二进制代码。

不可移植的编程技术

下列不可移植的编程技术示例可能会影响二进制兼容性:
  • 使用特定于处理器的编译器选项编译了应用程序,但是这些应用程序在除了该处理器之外的模型中运行
  • 启用了长用户名的旧的安全库接口
  • AIX共享库的非共享编译
  • X11R5 服务器扩展
  • 基于 IBM-850 代码集的语言环境

启用了长用户名的应用程序

AIX V 5.3, AIX V 6.1AIX V 7.1AIX V 7.2 可配置为容纳超过 8 个字符的用户名和组名。 如果这些系统正在运行使用安全库接口的应用程序,那么不应将这些版本的 AIX 操作系统配置为长用户名,除非已对这些应用程序进行长用户名支持测试。

在下列条件下,应用程序在启用了长用户名和长组名的系统上可能无法正常运行:
  • 未特地结构化以处理长用户名和长组名的应用程序。
  • 使用旧的安全库接口并且具有名称长度不超过 8 个字符的限制的应用程序。
  • 依赖于长度不超过 8 个字符的用户名和组名的应用程序。
下表显示了旧的安全库接口和启用了用户名的替代方法:
表 1. 启用了用户名的替代方法
旧的安全库接口长用户名和长组名 启用了用户名的替代方法
ckuserID() authenticatex()
cuserid() getpwuid()
getuinfo() getuinfox()
getuinfo_r() getuinfox()
getuserpw() getuserpwx()
newpass() newpassx()
putuserpw() putuserpwx()
putuserwhist() putuserpwxhist()

AIX V 7.2 上的 X11R5/X11R6 兼容性问题

AIX V 7.2 X-server 使用 X 的 X-Consortium 发行版 6 (通常称为 X11R6)。 IBM 与 X11R6 一起提供的库向后兼容,访问这些库的客户机应用程序可以在 AIX V 4 , AIX 5LAIX V 6.1AIX V 7.1上使用。 在这些版本的 AIX上, IBM® 还包含 X11R3, X11R4和 X11R5 兼容性安装选项,以实现最大的灵活性。

大多数 X 服务器应用程序不会导致任何问题。 但是,一些 X 服务器应用程序使用 X 服务器所提供的可装入的扩展。 可以通过使用扩展将新功能添加至 X 服务器。 对于每项扩展操作,在可以运行该扩展之前,会将该扩展的一部分装入到 X 服务器应用程序。 X11R6 将修改扩展在改进 X 服务器的过程中的工作方式。 必须使扩展修改与 X11R6 兼容才能正常运行。 IBM 提供的所有扩展都是兼容的。 下列扩展示例与 X11R6 不兼容:
  • 从 X-Consortium FTP 站点下载的样本扩展
  • 用户开发的扩展
  • 第三方提供的扩展
在此方案中,需要使扩展与 X11R6 兼容,该扩展才能正常运行。 用户开发的扩展和样本 X consortium 扩展必须在 X11R6 环境中重新编译。 对于第三方提供的扩展,请与供应商联系以进行与 X11R6 兼容的更新。

如果您正在使用非IBM 显示适配器,那么还可能使用供应商提供的特定于使用 X11R6 服务器功能的设备的软件。 在此方案中,该软件必须与 X11R6 兼容才能正常运行。 请与该软件的显示适配器的供应商联系。

32 位设备驱动程序和内核扩展

AIX 版本 6.1或更高版本中, AIX 操作系统通过仅提供 64 位内核来简化内核环境。 AIX 操作系统与先前版本的 AIX 操作系统保持应用程序二进制兼容性,但在 AIX 版本 6.1AIX 版本 7.1AIX 版本 7.2上不支持仅 32 位的设备驱动程序和内核扩展。

AIX 5L 上构建的双方式 (32-bit/64 位) 内核扩展只能在 AIX Version 6.1AIX Version 7.1AIX Version 7.2上以 64 位方式运行。