为了账号安全,请及时绑定邮箱和手机立即绑定

库部署与未使用的直接依赖关系

库部署与未使用的直接依赖关系

慕少森 2021-04-05 21:18:13
我试图找出Qt Assistant需要部署哪些库。我ldd在Linux上使用过此功能。我发现ldd提供了-u“打印未使用的依赖项”的选项。听起来好像有某种依赖(部署)并不需要(总是)。所以我又运行了两个ldd命令:~$ ldd -u ~/Qt/5.10.0/gcc_64/bin/assistant Unused direct dependencies:        /lib/x86_64-linux-gnu/libQt5Network.so.5        /lib/x86_64-linux-gnu/libQt5Sql.so.5        /lib/x86_64-linux-gnu/mesa/libGL.so.1        /lib/x86_64-linux-gnu/libpthread.so.0        /lib/x86_64-linux-gnu/libm.so.6        /lib/x86_64-linux-gnu/libgcc_s.so.1~$ ldd -r -u ~/Qt/5.10.0/gcc_64/bin/assistant Unused direct dependencies:        /lib/x86_64-linux-gnu/libQt5Network.so.5        /lib/x86_64-linux-gnu/mesa/libGL.so.1        /lib/x86_64-linux-gnu/libpthread.so.0        /lib/x86_64-linux-gnu/libm.so.6        /lib/x86_64-linux-gnu/libgcc_s.so.1我试图找出正在发生的事情,但我并不完全了解。我的问题是:什么是未使用的直接依赖项(这对我来说是矛盾的)?是否有可能找出Qt Assistant实际上是否需要未使用的直接依赖项(然后再启动它并等待错误)?上面的命令行之间到底有什么区别?为什么第一个列表不包含第二个列表libQt5Sql?
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

由于-u开关,它正在打印。在ldd的手册页中


-u, --unused

          Print unused direct dependencies.  (Since glibc 2.3.4.)

什么是未使用的直接依赖项(这对我来说是矛盾的)?


这是恕我直言->库您建立二进制文件,这是没有必要的。IE


gcc -L<LD_PATH> -Wall -o assistant assistant.c -lA -lB -lC

它将所有ABC列为依赖项,但它们可能实际上未以二进制形式使用。主要原因是Makefile中通用LDFLAGS。


是否可以找出Qt Assistant是否确实需要未使用的直接依赖项(然后再启动它并等待错误)?


不,我认为,只有在调用特定函数时才可以使用它。还有机会您可以使用此功能,不会看到错误。不过,如果您决定这样做。有一种疯狂的方式。列出所有调用的函数,然后检查需要哪些所有库。(不确定这一点,但我认为基于类似的逻辑ldd可以打印此内容。)根据手册页ldd可能运行二进制文件。因此,基本上可以说是您提到的一种情况。但不广泛。


 Be aware,  however,  that  in some circumstances, some versions of

 ldd may attempt to obtain the dependency information by directly 

 executing  the program.  Thus, you should never employ ldd on an

 untrusted executable,

 since this may result in the execution  of  arbitrary  code.

上面的命令行之间到底有什么区别?为什么第一个列出libQt5Sql但第二个没有列出?


差异是 -r


       -r, --function-relocs

          Perform relocations for both data  objects  and  functions,  and

          report any missing objects or functions (ELF only).

简而言之,它处理加载的库函数。建议使用ldd -u -r在这个错误在RedHat。


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信