我正在研究 elfdump
命令的克隆。
在所有可执行文件上运行 elfdump -ecps *file*
时,我的程序工作正常。然而,当我在一个库文件上运行我的程序时,比如 libc.so,它会为 .symtab 部分中的所有符号打印出错误的版本号(具体来说,它们都是零)。我已经多次查看文档,但我不明白为什么会这样。
有人可以提供一些提示吗?或者可能如何检测它是否是一个库,以便我可以硬编码一个 0?
最佳答案
我相信,您可以通过检查 e_type 字段是否为 ET_DYN 来确定您是否针对共享库运行。 (人 Sprite (5))
有一个article由 Ulrich Drepper 撰写,涵盖了 ELF 中的 glibc 每个符号版本控制技巧。也许那里有您以前没有遇到过的其他信息。 Linux 上的手册页似乎没有涵盖 ELF 文档中的每个符号版本控制信息。
关于c - ELF 文件版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/557688/