c - ELF 文件版本

标签 c static-libraries elf

我正在研究 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/

相关文章:

c++ - 强制窗口位于最顶层的窗口之上(如任务管理器)

c - 从多个管道读取内容,C

c++:从静态库创建共享对象

c++ - 为什么静态成员指针在 ELF 部分为零?

c - 如何可视化用 C 中的 igraph 制作的图形?

ios - 从 CocoaTouch 库调用 NSLog

c++ - 错误 LNK2005 : "void __cdecl operator delete(void *)" (? ?3@YAXPAX@Z) 已在 LIBCMTD.lib(delete_scalar.obj) 中定义

linux - 如何在没有任何符号信息的elf可执行文件中找到main函数的入口点?

linux - 为什么 Linux 二进制文件的虚拟内存地址从 0x8048000 开始?

c - 在C中退出处理程序