如何確定某個函數是否存在於一個庫中,或列出編譯庫中的函數?如何列出編譯庫中包含的可用函數等?
9
A
回答
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>
」 會給你血淋淋細節。可能有其他方式(或選項)可以更容易閱讀列表。
相關問題
- 1. 如何在mac os中列出動態庫中包含的函數/符號?
- 2. 如何使用execl編譯一個包含math.h庫的程序()
- 3. 如何製作一個自包含的函數庫/函數庫
- 4. 如何在編譯時在路徑中包含庫?
- 5. 什麼編譯器做的只包含一個函數調用
- 6. g ++編譯器中包含的g ++功能函數
- 7. 是否可以包含.c文件中的函數而不編譯它?
- 8. 包含包含目錄的標題時出現編譯錯誤
- 9. Mochiweb:包含並編譯其他庫
- 10. 如何嵌入/包含JSP編譯
- 11. 如何在maven編譯時包含用戶定義的包
- 12. 如何在SCons中編譯包含子目錄的包?
- 13. 如果沒有包含函數列表,C++程序將不能編譯
- 14. 如何在使用Apache Ant編譯的項目中包含ActionBar
- 15. 如何在編譯的macruby應用程序中包含gem?
- 16. 如何在MS-VS 2005編譯器項目設置中包含數學庫?
- 17. 編譯器編譯外部包含
- 18. 編譯器編譯也包含了嗎?
- 19. 如何列出存儲庫中的所有可用軟件包
- 20. 是否可以使用Swift包管理器來編譯和包含C庫?
- 21. 如何包含函數
- 22. 如何在預編譯期間包含自定義的SASS函數?
- 23. 如何用ocamlbuild編譯jocaml文件幷包含一個包?
- 24. 如何編譯包含訪問數據庫的Visual C#2008程序?
- 25. 查找不可編譯包的列表
- 26. 如何列出所有可能包含NULL列的重複行?
- 27. 已編譯的庫vs僅包含頭文件的庫
- 28. 如何在編譯器中包含彙編程序
- 29. 如何促進Ocaml庫與C函數調用的OCamljava編譯?
- 30. 在.js函數中包含JavaScript/jQuery庫