gpt4 book ai didi

c++ - 我怎样才能弄清楚为什么特定版本的库在依赖项中?

转载 作者:太空狗 更新时间:2023-10-29 12:06:06 24 4
gpt4 key购买 nike

我正在 ubuntu 12.04 上使用 cmake 构建一个大型 C++ 项目,然后获取生成的二进制包并尝试在 ubuntu 11.04 上运行它。然而,该程序未能说明它需要 glibc 2.14 版,但只能找到 2.13 版。我如何才能准确找出为什么需要 glibc=>2.14?

最佳答案

与大多数库不同,glibc 对其符号进行版本化。每个符号都标有一个值(例如“GLIBC_2.3.4”),表示上次更改其接口(interface)的库版本。这允许库包含给定符号的多个版本,并支持针对旧版本编译的二进制文件,同时保留进化的能力。您可以使用 objdump -T/lib/libc.so.6 查看此详细信息。

基本上,您应用中的某些内容链接到自 11.04 以来更改的符号。在您的二进制文件上尝试 objdump -T,看看它在寻找什么标签。

但从广义上讲,向后兼容性并不像在 Linux 中那样工作。如果你想让某些东西在旧软件上运行,你应该在旧软件上构建它。可以在更新的发行版上设置向后兼容的工具链,但这不是默认设置。

关于c++ - 我怎样才能弄清楚为什么特定版本的库在依赖项中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11664165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com