“未使用的直接依赖项”是什么意思?

“未使用的直接依赖项”是什么意思?

使用该ldd命令时,有一个选项 ,-u可以

打印未使用的直接依赖项

如在线帮助中所述。

例如:

ldd  -u /bin/gcc
Unused direct dependencies:
        /lib64/libm.so.6
        /lib64/ld-linux-x86-64.so.2

什么是“未使用的直接依赖项”?为什么他们没用过?为什么他们依赖关系

答案1

它们是依赖项,因为二进制文件将它们列为依赖项,在其动态部分中作为“NEEDED”条目:

readelf -d /usr/bin/gcc

将向您显示图书馆的gcc请求。

它们未被使用,因为gcc实际上不需要相关库导出的任何符号。就ld-linux-x86-64.so.2s 而言,这很正常,因为那是解释器。在libm的情况下,这通常是由无条件的-lm, 没有用于删除未使用的库的相应链接器选项

在许多情况下,这是由于构建工具的粒度有限造成的;特别是,链接例如GNOME 库往往会产生很长的库列表,这些库并不总是需要作为直接依赖项(但无论如何最终都会出现在库依赖项树中)。通常最好尝试避免使用未使用的依赖项,以简化依赖项处理(通过运行时链接器和包管理工具)。不过,忽略它是安全的,libm因为无论如何它都是相关的libc

相关内容