比方說,我們有一些庫編譯成某文件。之後,該庫與其他代碼鏈接到某個可執行文件.exe中。 .a文件的大小是6Mb,而.exe文件的大小是3Mb。對此的明顯解釋是,鏈接器從庫中拋出未使用的代碼。 我想知道的是最終可執行文件中真實的庫代碼版本。庫代碼的內存佔用分析
0
A
回答
0
庫有實現很多功能。一個EXE使用那裏的一些。 liker只在exe中添加exe使用的函數的代碼。
3
退房的連接選項。鏈接器通常可以選擇生成映射文件。這是鏈接到最終圖像的功能列表以及它們來自哪裏。聽起來就像你使用的是gcc,使用-map選項。
相關問題
- 1. 減少大型陌生代碼庫的內存佔用面積
- 2. Roslyn內存代碼的靜態代碼分析
- 3. 用於代碼分析的Java庫
- 4. 內存佔用
- 5. 代碼分析
- 6. SOLR佔用內存過多(部分2)
- 7. 代碼耗時過長,內存佔用量大
- 8. UIImagePickerControllerSourceTypeCamera佔用內存
- 9. Python代碼內省和分析
- 10. 爲C#.net代碼分析CPU緩存?
- 11. Java代碼 - 遠程執行內存分析
- 12. 分析Haskell代碼,但不包括庫分析信息
- 13. 代碼分析CSS
- 14. 分析MSP430代碼
- 15. JavaScript代碼分析
- 16. Erlang - 代碼分析
- 17. SQl代碼分析
- 18. php代碼分析
- 19. 分析PHP代碼
- 20. C代碼分析
- 21. Android內存分析
- 22. 堆內存分析
- 23. PyQt4的代碼分析
- 24. 代碼成績的分析
- 25. VSTS中的代碼分析
- 26. python2.6的+代碼分析器
- 27. 靜態代碼分析與動態代碼分析工具?
- 28. 針對iPhone的低內存佔用量的CSV解析器
- 29. Scala的內存分析
- 30. silverlight的內存分析器
這就是我所說的「這種明顯的解釋是,鏈接器從庫中投擲器出未使用的代碼」 – ashrugger 2010-06-19 12:16:17
,但它必須通過設計,所以如果你使用LIB文件。如果使用有大的LIB abd,則只能使用LIB中的一個函數,那麼只有一個來自LIB的具有它的依賴性的OBJ將被添加到EXE中。另一方面,如果你在一個OBJ文件中放置了很多功能並將其鏈接到你的應用程序,整個OBJ將被添加到EXE中。對於附加開關,可以從導入的OBJ文件中刪除未使用的功能。 – Oleg 2010-06-19 16:34:29
例如在http://en.wikipedia.org/wiki/Static_linking可以讀取以下「隨着靜態鏈接,它足以包括(由目標可執行直接和間接引用的庫的那些部分或目標庫)。對於動態庫,整個庫被加載,因爲事先並不知道哪些函數將被應用程序調用。這種優勢在實踐中是否顯着取決於庫的結構。「 – Oleg 2010-06-19 16:45:42