首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“未使用的直接依赖关系”是什么意思?

问“未使用的直接依赖关系”是什么意思?
EN

Unix & Linux用户
提问于 2018-10-03 15:00:04
回答 1查看 3.2K关注 0票数 4

当使用ldd命令时,有一个选项-u

打印未使用的直接依赖项

如在线帮助中所述。

例如:

代码语言:javascript
复制
ldd  -u /bin/gcc
Unused direct dependencies:
        /lib64/libm.so.6
        /lib64/ld-linux-x86-64.so.2

什么是“未使用的直接依赖关系”?为什么它们不被使用?为什么它们是依赖的?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-10-03 15:13:18

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

代码语言:javascript
复制
readelf -d /usr/bin/gcc

将向您展示库gcc请求。

它们是未使用的,因为gcc实际上不需要由相关库导出的任何符号。在ld-linux-x86-64.so.2‘S的例子中,这是正常的,因为这是翻译。在libm‘S的案例中,这通常是无条件的-lm,而不是相应的链接器选项以删除未使用的库。

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

票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/473014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档