是否有一种工具可以获取ELF .o或可执行文件中特定符号的信息?

3

我正在寻找一种便捷的方式(用于构建测试脚本),以查询目标文件中的单个符号。是否有一个工具可以通过其退出状态回答问题“符号X是否存在于文件Y中?”或者我只需要解析nm(1)的输出,例如使用grep和适当的正则表达式?更好的是,如果这样的工具可以提供有关符号的详细信息(大小、类型、值等)。

2个回答

5
对于可执行文件/共享库,可以查看readelfObjdump,它们可以转储二进制符号(名称混淆或未混淆),您应该能够使用grep进行搜索。
它们的源代码很容易获得,因此您可能可以将它们调整为更简单的工具,以完成手头的任务,或直接导入它们的代码库(并不是真正需要,您只需使用dlopen加载有问题的二进制文件,并使用dlsym检查符号是否存在)。
Objdump适用于二进制文件,nm和readelf将读取elf对象文件。

nm 处理对象文件 -- 我不明白你在这里打算区分“二进制文件”和“对象文件”的区别。 - Perry
@Perry:好发现,我在回复时没有太集中注意力(因此语法很糟糕 :|)。 - Necrolis

0
你可以直接使用 libbfd,但是浏览 API 并不明显如何直接获取你想要的信息。

如果你只关心ELF,那么libelf也值得一提。 - jørgensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接