![第三方编译的二进制文件的所有依赖项](https://linux22.com/image/44579/%E7%AC%AC%E4%B8%89%E6%96%B9%E7%BC%96%E8%AF%91%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E7%9A%84%E6%89%80%E6%9C%89%E4%BE%9D%E8%B5%96%E9%A1%B9.png)
我有一个由第三方编译的二进制文件,我需要知道它所需的所有依赖项。我不确定是否ldd
显示了一切。我确定二进制文件使用 GStreamer 和一些编解码器包,但ldd
仅显示 GStreamer,没有编解码器包...
有什么想法如何正确地做到这一点吗?
答案1
库可以在运行时加载,具体取决于特定环境、命令行参数、配置选项,甚至可能是月相。库本身也可以依赖于其他库。因此,除非你知道你的二进制文件在里面做什么,否则确定实际需要什么似乎是不可能的。
答案2
ldd
是一个好的开始。然后,您可以通过 运行二进制文件strace -fo /tmp/strace.log
,并查看应用程序试图查找的内容。
以grep
of 开头ENOENT
它是什么不是发现。
您还可以查看该应用程序随附的文档以及可能的运行日志(如果有)。
答案3
ldd 仅显示链接依赖关系,也就是说,它不显示实际成功运行程序可能需要什么,而只是显示运行程序根本需要什么。
您应该通过包管理器进行依赖项解析。