7.3. 对glibc 的显著变化


现在,所有线程 API 都合并到 libc.so.6

在 RHEL 8 中,系统线程库 libpthread.so 是不同的库。在 RHEL 9 中,所有线程 API 都已合并到核心 C 库 libc.so.6 中。将线程移到核心 C 库可使库默认支持线程。由于线程 API 和核心 C,POSIX 以及 BSD API 都同时更新(没有不同的库),因此使用一个文件,就地升级过程也变得更加顺畅。

在链接线程应用程序时,开发人员可以继续使用 -lpthread 选项,但不再是必需的。

过去,库使用弱引用 pthread_createpthread_cancel 来检测进程是否可能是多线程的。由于这个检查现在始终成功,因为 libpthread.so 现在位于核心 C 库中,所以库应该改为使用 __libc_single_threaded 符号。

libdl 库现在合并到 libc.so.6

在 RHEL 8 中,libdl 库是一个不同的库。在 RHEL 9 中,libdl 库已合并到 核心 C 库 libc.so.6 中。这意味着,插入 dlsym 函数现在更加困难。需要控制符号解析如何工作的应用程序应该切换到审核程序(LD_AUDIT)接口。

dnsfiles 的 名字服务切换服务插件现在合并到 libc.so.6

在 RHEL 8 中,为用户和组群身份管理 API 提供数据的filesdns 的名字服务切换(NSS)服务是不同的插件。在 RHEL 9 中,插件已合并到核心 C 库 libc.so.6 中。移动 filesdns 服务提供程序确保需要跨挂载命名空间边界(例如,输入一个容器)应用程序可以这样做,知道 NSS filesdns 访问服务总是在进程启动时被加载。

调用依赖于引用 filesdnsnsswitch.conf 的用户和组 API 时,开发人员可以预期这些服务始终存在,并提供底层服务数据。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat