使用该ldd
命令时,有一个选项-u
, 来
打印未使用的直接依赖项
如在线帮助中所述。
例如:
ldd -u /bin/gcc
Unused direct dependencies:
/lib64/libm.so.6
/lib64/ld-linux-x86-64.so.2
什么是“未使用的直接依赖项”?为什么它们没有被使用?为什么它们是依赖项?
使用该ldd
命令时,有一个选项-u
, 来
打印未使用的直接依赖项
如在线帮助中所述。
例如:
ldd -u /bin/gcc
Unused direct dependencies:
/lib64/libm.so.6
/lib64/ld-linux-x86-64.so.2
什么是“未使用的直接依赖项”?为什么它们没有被使用?为什么它们是依赖项?
它们是依赖项,因为二进制将它们列为依赖项,在其动态部分中作为“NEEDED”条目:
将向您显示库
gcc
请求。它们未使用,因为
gcc
实际上不需要相关库导出的任何符号。在ld-linux-x86-64.so.2
's 的情况下,这很正常,因为那是解释器。在libm
这种情况下,这通常是无条件的-lm
,没有相应的链接器选项来删除未使用的库。在许多情况下,这是由于构建工具的粒度有限。特别是,链接例如GNOME 库往往会导致很长的库列表,这些库并不总是需要作为直接依赖项(但最终会出现在库依赖项树中)。通常最好尽量避免使用未使用的依赖项,以简化依赖项处理(通过运行时链接器和包管理工具)。忽略它是安全的,
libm
因为libc
无论如何这都是相关的。