一尘不染

linux / gcc:来自C / C ++程序的ldd功能

linux

是否有一种简单有效的方法来知道给定的动态链接ELF缺少从C / C ++程序 内部 运行所需的.so ?

我需要一个功能与相似的程序ldd,而无需尝试执行ELF来找出系统中的(met / unmet)依赖项。也许通过某个库询问ld-
linux.so实用程序?(我是linux这部分的新手=)

注意:读取的源代码ldd对我的意图不是很有帮助:似乎ldd实际上是在分叉另一个进程并执行该程序。

如果不可能不执行就知道某个程序具有未满足的依赖关系,那么是否有某种方法至少可以ELF从我的程序中快速列出所有所需的.so ?

在此先感谢=)


阅读 330

收藏
2020-06-07

共1个答案

一尘不染

根据ld.so(8),将环境变量设置LD_TRACE_LOADED_OBJECTS为非空字符串将得到类似ldd的结果(而不是正常执行二进制文件或库)。

setenv("LD_TRACE_LOADED_OBJECTS", "1", 1);
FILE *ldd = popen("/lib/libz.so");
2020-06-07