比方说,我们有一些库编译成某文件。之后,该库与其他代码链接到某个可执行文件.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