当前位置: 首页 > 面试题库 >

确定Linux二进制文件的直接共享对象依赖关系?

上官景铄
2023-03-14
问题内容

如何轻松找出ELF格式的Linux二进制文件的直接共享对象依赖关系?

我知道ldd工具,但这似乎可以输出二进制文件的所有依赖关系,包括二进制文件所依赖的任何共享对象的依赖关系。


问题答案:

您可以readelf用来浏览ELF标头。readelf -d将直接依赖项列为NEEDED部分。

 $ readelf -d elfbin

Dynamic section at offset 0xe30 contains 22 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libssl.so.1.0.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000c (INIT)               0x400520
 0x000000000000000d (FINI)               0x400758
 ...


 类似资料:
  • 问题内容: 在针对本机平台进行开发时,我可以使用ldd列出所有共享库(.so文件),这些文件是我构建的二进制可执行文件,将在启动时尝试加载。但是在交叉编译时,我不知道如何获取相同的信息。在不正常的binutils工具,像或者,可以一起建立了交叉编译,而是,这是一个神秘的shell脚本,显然只能在本地平台上运行。 因此,使用跨目标binutils工具,是否有任何方法可以获取外部二进制文件的动态链接依

  • 我有两个网络应用程序,它们部署在同一个野蝇中。这两个webapp都应该共享某些库,这些库不属于野蝇模块的一部分。 为了使部署不依赖于特定的wildfly,我不希望通过wildfly模块系统提供共享库(我知道,用户可以定义模块)。 我的方法是简单地将库和两个webapp放在部署目录中,并在各自的jboss部署结构中引用它们。然而,这失败了。 我试图将该库嵌入到战争中,并通过 由于找不到模块,因此它将

  • 问题内容: 有没有办法用C#P / Invoke调用用C编写并在Unix上构建的共享对象文件? 还是我需要使用Java或类似的东西? 问题答案: Mono具有从dlopen(3)之上构建的C#中与本机库集成的能力。您只需要使用带有库名称的DllImport语句(即“ libform.so.5”),然后使用友好的C#类包装本机代码和数据类型,即可处理所有低级内容。该页面具有很好的概述,其中包含有关如

  • 问题内容: 我想排除Maven插件的直接依赖关系,并且此答案中描述的方法不起作用(如此注释所示)。 作为一个特定的例子: 我仍然在依赖项列表中(带有)看到了。我究竟做错了什么? (如果有人对如何用该API的JDK 9等效物替换对工件的依赖有了想法[似乎发生在Java 8上,其中“ [JAXB API os从[jar:… jre / lib /rt.jar]“],我很乐意为此开设一期新书。) 更新资

  • 在grails progect中,我想构建一个二进制插件,在每个特定的项目上都可以实现“钩子” 二进制插件结构 THX 法比奥

  • 问题内容: 即,您如何从文本(xml / txt,独立于编码)中分辨出存档文件(jar / rar / etc。)? 问题答案: 没有保证的方法,但是有两种可能: 在文件上查找标题。不幸的是,标头是特定于文件的,因此尽管您可能能够发现它是RAR文件,但您将无法获得更通用的答案,无论是文本还是二进制。 计算字符与非字符类型的数量。文本文件将主要是字母字符,而二进制文件(尤其是压缩文件,如rar,zi