Red Hat Training

A Red Hat training course is available for RHEL 8

16.5. 编译器和开发工具中的兼容性破坏更改

librtkaio 已删除

在这个版本中,librtkaio 库已被删除。这个库为一些文件提供了高性能实时异步 I/O 访问,这些文件基于 Linux 内核异步 I/O 支持(KAIO)。

删除后:

  • 使用 LD_PRELOAD 方法加载 librtkaio 的应用程序会显示一个缺少库的警告信息,载入 librt 库并正确运行。
  • 使用 LD_LIBRARY_PATH 方法加载 librtkaio 的应用程序会加载 librt 库,并正确运行,而无需任何警告。
  • 使用 dlopen() 系统调用访问 librtkaio 的应用程序直接载入 librt 库。

librtkaio 用户有以下选项:

  • 使用上述回退机制,无需对其应用进行任何更改。
  • 更改应用程序的代码以使用 librt 库,该库提供兼容 POSIX 兼容 API。
  • 更改应用程序的代码以使用 libaio 库,该库提供了一个兼容的 API。

librtlibaio 都可以在特定条件下提供可比较的功能和性能。

请注意,libaio 软件包具有红帽的兼容性级别 2,而 librtk 和移除的 librtkaio 级别为 1。

如需了解更多详细信息,请参阅 https://fedoraproject.org/wiki/Changes/GLIBC223_librtkaio_removal

从中删除 Sun RPC 和 NIS 接口 glibc

glibc 库不再为新应用程序提供 Sun RPC 和 NIS 接口。这些接口现在仅适用于运行传统应用程序。开发人员必须将其应用程序更改为使用 libtirpc 库,而不是 Sun RPC 和 libnsl2,而不是 NIS。应用可以从替换库中的 IPv6 支持中受益。

已删除 32 位 Xen 的 nosegneg

在以前的版本中,glibc i686 软件包包含替代的 glibc 构建,它避免使用带有负偏移(nosegneg)的线程描述符片段寄存器。这个替代版本仅在 Xen 项目管理程序的 32 位版本中使用,没有硬件虚拟化支持,作为降低完全半虚拟化成本的优化。这些替代构建不再使用,它们已被移除。

make 新运算符 != 会导致对特定现有 makefile 语法有不同的解释

!= shell 分配运算符已添加到 GNU make 中,作为 $(shell …​) 功能的替代选择,以提高与 BSD makefile 的兼容性。因此,名称以感叹号结尾且紧跟分配(如 variable!=value )的变量现在被解释为 shell 分配。要恢复之前的行为,请在声明标记后添加一个空格,如 variable! =value

有关 Operator 和函数之间的更多详情和不同之处,请参阅 GNU make 手册。

用于 MPI 调试支持的 Valgrind 库已删除

valgrind-openmpi 软件包提供的 Valgrindlibmpiwrap.so wrapper 库已被删除。这个库启用了 Valgrind 来调试使用消息传递接口(MPI)的程序。这个库特定于之前版本的 Red Hat Enterprise Linux 中的 Open MPI 实施版本。

建议 libmpiwrap.so 用户从特定于其 MPI 实现和版本的上游源构建自己的版本。使用 LD_PRELOAD 技术将这些自定义构建库提供给 Valgrind

从中删除开发标头和静态库 valgrind-devel

在以前的版本中,用于包含用于开发自定义 valgrind 工具的开发文件 valgrind-devel 子软件包。在这个版本中删除这些文件,因为它们没有保证的 API,必须静态链接,且不受支持。valgrind-devel 软件包仍然包含识别 valgrind 程序和标头文件的开发文件,如 valgrind.hcallgrind.hdrd.hhelgrind.hmemcheck.h,它们都稳定且受到良好的支持。