ldd是否报告库的所有依赖关系?

时间:2018-12-29 11:30:17

标签: linux shared-libraries static-libraries ld ldd

让我们假设有一个共享库utils.so。它可能包含未定义的符号。还假设ldd报告该库依赖于其他一些库:

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

(顺便问一句,utils.so不仅取决于某些共享库,而且还取决于某些静态库吗?)

是不是所有utils.so的未定义符号都由库library1.so,library2.so,...,libraryN.so解析了?

关于静态库的相同问题-静态库的所有未定义符号是否都由ldd报告的库解决?

1 个答案:

答案 0 :(得分:2)

  

确实是utils.so的所有未定义符号都由库library1.so,library2.so,...,libraryN.so解析了

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

  

关于静态库的同样问题

ldd与静态库无关,它无法读取静态库或报告任何静态库。静态库没有依赖项。它们或多或少是对象的愚蠢档案。