【发布时间】:2009-10-05 12:04:55
【问题描述】:
是否有一种简单有效的方法可以知道给定的动态链接 ELF 缺少运行所需的 .so,所有这些都来自 C/C++ 程序的内部?
我需要一个功能与ldd 有点相似的程序,而不是尝试执行ELF 来找出系统中的(满足/未满足)依赖关系。也许通过某个库询问 ld-linux.so 实用程序? (我是linux这部分的新手=)
注意:阅读
ldd的源代码对我的意图没有多大帮助:似乎ldd实际上是在分叉另一个进程并执行程序。
如果不执行程序就无法知道程序具有未满足的依赖关系,是否有某种方法至少可以从我的程序中快速列出 ELF 所需的所有 .so 文件?
提前致谢 =)
【问题讨论】:
-
您是否有充分的理由不直接调用 ldd 实用程序并解析其输出?在linux下,这种技术被广泛使用。
-
我不希望调用 shell 来执行我自己的程序以外的任何东西。此外,fork、启动 shell 等只是为了尝试是否可以运行可执行文件并不是很有效反复试验.. 但是是的,我怀疑调用 ldd 是一个不错的标准选择。
-
对不起,这是一个神话。 Fork 现在一点也不贵,而且大多数 exec*() 调用不使用 shell 来运行二进制文件。与所有未来调用的 fork()/exec() 开销相比,你很容易通过深入研究 ld-linux 内部来浪费更多时间。
标签: linux gcc linker dependencies ldd