了解 glibc 版本

了解 glibc 版本

在企业级 Linux 操作系统中,

  • SLES 11.4 使用 glibc 2.11
  • SLES 12.3 我认为使用 glibc 2.19
  • RHEL 6.10 使用 glibc 2.12
  • RHEL 7.6 使用 glibc 2.17
  • glibc 的源代码目前为 2.29
  • 不久前,我获得了来自具有 glibc 2.14 的 Linux 系统的可执行代码,但无法在 SLES 11 上运行它。

从所有阅读来看,glibc 似乎无法在系统上手动更新;升级版本的唯一方法是跳转到 Linux 操作系统的完整更新版本。 这是真的?

虽然一直存在向后兼容性,但没有向前兼容性,这让我......

我使用当前最新的 RHEL 7.6 和 glibc 2.17,如果有人当前使用 SLES 12 和 glibc 2.19 并给我可执行代码,我该怎么办?如果他们在不久的将来使用某些带有更高版本的 glibc 的 Linux,也会有同样的问题吗?有没有办法解决这个问题,无论是接收方有较旧的 glibc 还是提供方有较新的 glibc?我还发现问题的很大一部分是 glibc 网站的声明:GNU C 库每 6 个月发布一次

答案1

库中有版本化的符号。如果新代码命中版本符号之一,并且该版本比 libc 中的任何版本都新,则您将无法运行

他们可以构建静态吗?

答案2

发行版附带较旧/较新的 glibc 版本,具体取决于所需的稳定性。

从所有阅读来看,glibc 似乎无法在系统上手动更新;升级版本的唯一方法是跳转到 Linux 操作系统的完整更新版本。这是真的?

不会。每次你的包管理器发现新版本的 glibc 时,glibc 都会更新。主要文件是/lib/libc.so.6.这是链接到的动态库程序(以便它们可以运行 C 标准库中包含的 C 函数)。

尽管您可以通过编译所需版本的 glib 并将结果复制到libc.so.6来手动更新 glibc lib,但不建议这样做,因为二进制文件可能会在执行时发出错误消息,而且较新版本的 glibc 尚未经过发行版包的测试维护者。因此,您可以预期系统会不稳定。

相关内容