2008-12-24 71 views

回答

16

您可以使用nm命令列出静态库中的符号。

nm -g -C <libMylib.a> 
3

使用这个命令:

objdump的-t“你的图书馆”

它将打印超过你的想象 - 不只是函数名,而是整个符号表。检查你得到的符号的各种属性,你将能够从变量和东西中整理出函数。

6

在Linux/Unix下,您可以使用objdump -T列出给定对象中包含的导出符号。在Windows下有dumpbin(IIRC dumpbin /exports)。请注意,为了允许重载,C++函数名称会被损坏。

编辑:在看到codelogic的anwser后我记得objdump也知道-C去执行去块。

8

对于ELF二进制文件,你可以用readelf:

readelf -sW a.out | awk '$4 == "FUNC"' | c++filt 

-s:列表符号 -W:不要切过长的名字

awk命令然后将过滤掉所有的功能,和C++ filt将取消它们。这意味着它会将它们从内部命名机制转换为可读的形式。它输出与此类似名称(从Boost.Filesystem的LIB拍摄):

285: 0000bef0 91 FUNC WEAK DEFAULT 11 boost::exception::~exception() 

无C++ FILT,名称显示为_ZN5boost9exceptionD0Ev

7

对于微软的工具, “link /dump /symbols <filename>” 会给你血淋淋细节。可能有其他方式(或选项)可以更容易阅读列表。

相关问题