Menu Close

Red Hat Training

A Red Hat training course is available for RHEL 8

第 18 章 编译器和开发工具中破坏兼容性的更改

librtkaio 删除

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

由于删除的结果:

  • 使用 LD_PRELOAD 方法加载 librtkaio 的应用程序会显示对缺少库的警告,而是加载 librt 库 并正确运行。
  • 使用 LD_LIBRARY_PATH 方法加载 librtkaio 的应用程序 加载 librt 库 并正常运行,没有任何警告。
  • 使用 dlopen() 系统调用来访问 librtkaio 的应用程序直接载入 librt 库

librtkaio 用户有以下选项:

  • 使用上面描述的回退机制,而不对其应用程序进行任何更改。
  • 将应用程序代码改为使用 librt 库, 它提供了一个兼容的 POSIX API。
  • 将应用程序代码改为使用 libaio 库 , 该库提供了一个兼容的 API。

librt 和 libaio 在特定条件下提供功能和性能。

请注意, 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 Project hypervisor 的 32 位版本,但没有硬件虚拟化支持,从而可以降低完全半虚拟化的成本。现在,这些替代构建不再被使用,它们已被删除。

make 新的 operator != 会对某些现有的 makefile 语法有不同的解释

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

有关运算符和功能之间的更多详情和区别,请查看 GNU make 手册。

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

valgrind-openmpi 软件包提供的 Valgrindlibmpiwrap.so wrapper 库已被删除。这个库启用了 Valgrind 使用 Message Passing Interface(MPI)调试程序。这个程序库专用于之前 Red Hat Enterprise Linux 版本中的 Open MPI 实现版本。

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

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

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