2008-12-24 26 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>」 會給你血淋淋細節。可能有其他方式(或選項)可以更容易閱讀列表。

相關問題