如何判断elf文件的链接类型?

时间:2012-11-19 15:23:52

标签: linux static-linking dynamic-linking

我正在做一个检查elf文件的脚本,在某些时候需要检查它的链接类型。
所以,
Linux中是否有任何工具或稳定的方法可用于检查输出文件是完全静态链接还是动态链接?

'ld.so --verify'可以检查文件是否是动态链接的,但它也检查该链接器是否可以处理,因此我不能将结果用作链接类型的确定。

“nm”,“file”等其他工具会检查输出文件并通过打印消息提供有关链接类型的一些信息,这使得使用它不太可靠。如果我编写脚本来grep单词'动态链接''静态链接'标准输出'file $ filename'作为链接类型的验证感觉不可靠..

那么,有没有简单的方法或小工具来检查链接类型?或者为什么不可能?

2 个答案:

答案 0 :(得分:1)

你可以在二进制文件上使用ldd,如果它是动态链接的,它会打印共享库并返回0,如果它是静态链接的,则返回1

答案 1 :(得分:0)

我不知道具体做什么的实用程序 - 如上所述,ldd可以(ab-)用于确定它。 file也可能有用。但是信息在ELF标题中,只需要正确解析,所以写一个简单的程序来做这件事应该不难......