linux – 库部署与未使用的直接依赖关系
我试图找出Qt Assistant需要部署的库.我在
Linux上使用了ldd.
我发现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 我试图找出发生了什么,但我并没有完全理解它. 我的问题是: >什么是未使用的直接依赖(这听起来很矛盾 解决方法
由于-u开关打印.
在ldd的手册页中 -u,--unused Print unused direct dependencies. (Since glibc 2.3.4.)
这是恕我直言 – >你建立二进制文件库是不必要的. gcc -L<LD_PATH> -Wall -o assistant assistant.c -lA -lB -lC 它会将所有A B C列为依赖项,但它们实际上可能不会用于二进制文件.
不,我认为,因为只有在您调用特定功能时才可以使用它. 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.
差异是-r -r,--function-relocs Perform relocations for both data objects and functions,and report any missing objects or functions (ELF only). 简而言之,它处理加载的库函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |