加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 19:54:21 所属栏目:Linux 来源:网络整理
导读:是否有一种简单有效的方法可以知道给定的动态链接ELF是否缺少必需的.so来运行,所有这些都来自C/C++程序的内部? 我需要一个与ldd具有某些相似功能的程序,而不是试图执行ELF来找出系统中的(met / unmet)依赖项.也许通过一些库询问ld-linux.so实用程序? (我是
是否有一种简单有效的方法可以知道给定的动态链接ELF是否缺少必需的.so来运行,所有这些都来自C/C++程序的内部?

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

NOTE: reading the source code of ldd was not very helpful for my intentions: it seems that ldd is in fact forking another process and executing the program.

如果在不执行程序的情况下无法知道某个程序是否存在未满足的依赖项,那么是否有某种方法可以在我的程序中快速列出所有ELF所需的.so所有内容?

在此先感谢=)

解决方法

根据 ld.so(8),将环境变量LD_TRACE_LOADED_OBJECTS设置为非空字符串将给出类似ldd的结果(而不是正常执行二进制文件或库).
setenv("LD_TRACE_LOADED_OBJECTS","1",1);
FILE *ldd = popen("/lib/libz.so");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读