Red Hat Training
A Red Hat training course is available for RHEL 8
第 5 章 补充主题
5.1. 编译器和开发工具中的兼容性破坏更改
已删除 librtkaio
在这个版本中,lib rtkaio 库已被删除。此库为某些文件提供了高性能实时异步 I/O 访问,该文件基于 Linux 内核异步 I/O 支持(KAIO)。
删除后:
-
使用
LD_PRELOAD
加载 librtkaio 的应用会显示有关缺少库的警告,加载 librt 库并正确运行。 -
使用
LD_LIBRARY_PATH
方法加载 librtkaio 的应用程序会载入 librt 库,并在没有任何警告的情况下正确运行。 -
使用
dlopen()
系统调用来访问 librtkaio 的应用程序直接载入 librt 库。
librtkaio 用户有以下选项:
- 使用上述回退机制,无需更改其应用。
- 更改其应用程序的代码以使用 librt 库,该库提供兼容的 POSIX 兼容 API。
- 更改其应用的代码以使用 libaio 库,该库提供兼容的 API。
librt 和 libaio 都可以在特定条件下提供可比的功能和性能。
请注意,lib aio 软件包的红帽兼容性级别为 2,而 librtkaio 和 移除的 librtkaio 级别 1。
详情请查看 https://fedoraproject.org/wiki/Changes/GLIBC223_librtkaio_removal
从 glibc
中删除 Sun RPC 和 NIS 接口
glibc
库不再为新应用程序提供 Sun RPC 和 NIS 接口。现在,这些接口仅适用于运行传统应用程序。开发人员必须更改其应用程序以使用 libtirpc
库,而不是 Sun RPC 和 libnsl2
而不是 NIS。应用可从替换库中的 IPv6 支持中受益。
删除了适用于 32 位 Xen 的 nosegneg
库
在以前的版本中,gli bc i
686 软件包包含一个替代 glibc
构建,它避免使用带有负偏移(nosegneg
)的线程描述符片段注册。此备选构建仅在没有硬件虚拟化支持的 Xen 项目系统管理程序的 32 位版本中使用,作为降低完全半虚拟化成本的优化。这些替代构建不再使用,它们已被删除。
make
的新操作 !=
会与特定的现存 makefile 语法有不同的解释
!=
shell 分配运算符已添加到 GNU make
中,作为 $(shell … 。)
功能的替代方案,以提高与 BSD makefile 的兼容性。因此,名称以感叹号结尾的变量,紧接在 变量!=value
等分配后立即解析为 shell 分配。要恢复之前的行为,请在声明标记后添加一个空格,比如 variable! =value
。
有关运算符和函数之间的更多详细信息和差异,请参阅 GNU make
manual。
用于 MPI 调试支持的 Valgrind 库已删除
由 valgrind-openmpi
软件包提供的 Valgrind 的 libmpiwrap.so
包装器库已被删除。这个库启用了 Valgrind 使用 Message Passing Interface(MPI)调试程序。这个库专用于之前版本的 Red Hat Enterprise Linux 中的 Open MPI 实施版本。
建议 libmpiwrap.so
用户从特定于其 MPI 实施和版本的上游源构建自己的版本。利用 LD_PRELOAD
技术,将这些自定义的库提供给 Valgrind。
开发标头和静态库已从 valgrind-devel
中删除
在以前的版本中,valgrind-devel
子软件包用于包含用于开发自定义 valgrind 工具的开发文件。在这个版本中会删除这些文件,因为它们没有保证的 API,所以必须静态链接,且不受支持。valgrind-devel
软件包仍包含用于 valgrind-aware 程序和标头文件的开发文件,如 valgrind.h
、callgrind.h
、drd.h
、helgrind.h
和 memcheck.h
,它们稳定且受到良好支持。