升级 glibc 后应用程序报告“libc.so.6:无法处理 TLS 数据”

Applications reporting “libc.so.6: cannot handle TLS data” after upgrading glibc

背景信息:

Linux OS:精简、简约且非常定制(没有 apt-get、yum 等)

Linux 内核:2.6.19.1

当前 glibc 版本:2.3.6

目标 glibc 版本:2.6.1

问题:

正在尝试安装由第 3 方提供的 ipk 包,该包依赖于 glibc 版本 >= 2.6(当前版本为 2.3.6)

3rd 方提供了不同的ipk 包来将glibc 升级到2.6.1。执行软件包安装后,依赖 glibc 的所有其他应用程序报告 "libc.so.6: cannot handle TLS data"

有人熟悉在不使用任何类型的包管理器支持的情况下在自定义 Linux OS 上升级 glibc 吗?

我的理解是 glibc 应该向后兼容并且升级它不应该导致以前运行的应用程序出现问题。这个假设不正确吗?

我可以 post 请求更多信息。非常感谢任何和所有帮助,提前致谢。

My understanding is that glibc should be backwards compatible and upgrading it shouldn't cause issues with applications that had previously been working.

没错。

您的问题很可能是 ld-linuxlibc.so.6 之间不匹配的结果——它们 必须 来自同一个版本,否则会出现问题发生(GLIBC 实际上由许多库组成,它们 所有 必须匹配)。

您的第 3 方提供的 glibc 包可能是 mis-configured 并替换了一个,但没有替换另一个。可能它将 libc.so.6 安装到 /usr/local/lib 而不是适合您的 OS.

的任何位置

因此在安装第 3 方更新之前找到所有 "belong" 到 GLIBC 的文件,并验证每个文件都被它替换了。

也有可能(虽然可能性较小)第 3 方包已损坏,或者配置为不支持 TLS。

如果您 link 一个针对具有 TLS 支持的 GLIBC 的应用程序,然后将 GLIBC 升级到配置为不支持 TLS 的应用程序,应用程序 中断。这是预期的,"normal"(在没有 TLS 支持的情况下配置 GLIBC 根本不是一个好主意)。