假设我们有一个名为 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/