当前位置:  开发笔记 > 运维 > 正文

库的大小和可执行文件

如何解决《库的大小和可执行文件》经验,为你挑选了2个好方法。

我在Windows上使用MSVC创建了一个静态库*.lib.图书馆的大小是70KB.然后我有一个链接这个库的应用程序.但是现在最终可执行文件(*.exe)的大小是29KB,小于库.我想知道的是:

    由于库是静态链接的,我认为它应该直接添加到可执行文件大小,最终的exe大小应该大于那个?Windows exe格式是否也对二进制数据进行了一些压缩?

    它是如何用于linux系统的,那就是linux上的库(*.a/*.la文件)的大小与linux可执行文件(*.out)的大小有什么关系?

-广告



1> David Norman..:

Windows和Unix上的静态库是.obj/.o文件的集合.链接器查看每个目标文件,并确定程序是否需要链接.如果不需要,则目标文件不会包含在最终的可执行文件中.这可能会导致可执行文件比库小.

编辑:正如MSalters所指出的,在Windows上,VC++编译器现在支持生成启用功能级链接的目标文件,例如,请参见此处.事实上,编辑和继续需要这样,因为编辑和继续需要能够替换可执行文件的最小可能部分.



2> Greg Hewgill..:

文件中还有其他簿记信息,这些信息.lib是最终可执行文件不需要的.此信息有助于链接器找到实际链接的代码.此外,调试信息可能存储在.lib文件中但不存储在.exe文件中(我不记得在lib文件中为obj存储调试信息的位置,它可能在其他地方).

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有