为共享库文件(*.so)生成头文件(*.h)

8

我有一个共享库文件 (libmylib.so),但没有相应的头文件 (mylib.h)。

您是否知道一些生成这个头文件的方法或工具?


1
可能不切实际,甚至不可能。你从哪里得到这个 .so 文件的? - Fred Larson
我想使用我以前的一个有很多有用函数的库。很多年前,我移除了这个带源码的库。现在我找到了一个so文件,只是想看看存在的方法。我可以恢复一些方法并且能够调用它们,我也记得一些方法的名称,但是不记得参数和结构的顺序。当然,我可以使用反汇编器,但是首先我想找到更简单的方法。 - dzav
1
你可以查看这个问题的一些答案:http://stackoverflow.com/q/711220/10077 - Fred Larson
1个回答

7

总的来说,这是不可能的,因为.so文件中没有足够的参数列表信息——特别是如果使用非标准类型(例如结构体),因为类型信息不是.so文件的一部分。

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

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


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