linux - ldd 是否报告库的所有依赖项?

标签 linux shared-libraries static-libraries ld ldd

假设我们有一个名为 utils.so 的共享库。它可能包含 undefined symbol 。还假设 ldd 报告该库依赖于其他一些库:

$ ldd utils.so
  library1.so
  library2.so
  ...
  libraryN.so

(但是 utils.so 有可能不仅依赖于一些共享库,还依赖于一些静态库吗?)

utils.so 的所有 undefined symbol 是否都由库 library1.so、library2.so、...、libraryN.so 解析?

关于静态库的相同问题 - 静态库的所有 undefined symbol 是否都由 ldd 报告的库解析?

最佳答案

Is it true that all undefined symbols of utils.so are resolved by libraries library1.so, library2.so, ... , libraryN.so

不一定。您可以创建一个没有依赖关系但带有 undefined symbol 的共享库。如果符号是由可执行文件(或已经恰好加载的共享库)提供的,那么这样的库将工作正常,否则无法加载。除非有针对可执行文件解析符号的特定需要,否则不建议创建此类库。

And the same question about static libraries

ldd 与静态库无关,它无法读取它们或报告有关它们的任何信息。静态库没有依赖关系。它们或多或少是对象的愚蠢文件。

关于linux - ldd 是否报告库的所有依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53969125/

相关文章:

c - 写入关闭的本地TCP套接字不会失败

linux - 强制 Linux 库驻留在物理 RAM 中?

c - 两个程序链接到动态链接库

ios - "directory not found for option"Flurry 分析库

linux - 鉴于 -D %s busybox v1.30.1 提示无效日期

linux - 命令行 GUI 是如何制作的?

c++ - 如何在不添加对库的依赖的情况下添加与库结构的兼容性?

configuration - 如何从 OpenSSL 生成动态库和静态库?

iphone - 为什么设备和模拟器的构建不同?

linux - 多次访问 UNIX 中特定单词之间的文本