【问题标题】:Generate header file (*.h) for on shared library file (*.so)为共享库文件 (*.so) 生成头文件 (*.h)
【发布时间】:2013-04-24 16:16:23
【问题描述】:

我有共享库文件 (libmylib.so),但没有头文件 (mylib.h)。

你知道一些从共享库文件生成这个头文件的方法/工具吗?

【问题讨论】:

  • 可能不切实际,如果不是不可能的话。你从哪里得到这个 .so 文件的?
  • 我想使用具有许多有用功能的旧库。多年前,我用源代码删除了这个库。现在我找到了so-file,只想看看现有的方法。我可以恢复一些方法并调用它们,我还记得一些方法的名称,但不记得参数和结构的顺序。当然,我可以使用反汇编程序,但首先我尝试找到更简单的方法。
  • 你可以看看这个问题的一些答案:stackoverflow.com/q/711220/10077

标签: c linux gcc


【解决方案1】:

这通常是不可能的,因为 .so 文件不包含有关参数列表的足够信息 - 特别是在使用非标准类型(例如结构)时,因为类型信息不是 .so 文件的一部分.

即使只使用标准类型,参数列表也不是 ELF 符号表的一部分(参见 http://refspecs.linuxbase.org/elf/elf.pdf1-15ff。)。

但是,如果库没有被剥离(= 它包含调试信息),则 DWARF 部分确实包含有关参数列表的信息,请参阅How to extract function prototypes from an elf file? 了解详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多