正在阅读:编译宝典:执行文件极速瘦身攻略编译宝典:执行文件极速瘦身攻略

2004-10-20 10:13 出处:CSDN 作者:tuyang 责任编辑:linjixiong

  5.1 连接选项中有一个是/opt:nowin98,意思是将段的大小设定成为Win2000适应的。编译看看:哇塞,变成了2,560byte。看来这个选项确实把文件变小了N多。

  5.2 在查察连接选项中还有没有什么特别的。发现/align:xx还可以将段大小缩小。通过UltraEdit察看刚才/opt:nowin98编译出来的文件,发现每个段的大小都是4K的整数倍。看来/align:xx还有减小的趋势。试一把再说:添加连接选项:
  /align:16(这个大小已经是能够设定的最小的了)。看看结果:1,408Bytes。厉害,现在代码更小了。

  5.3 现在回想起来,执行文件大小有数据段,执行代码段等等,如果把这些段都合并起来,是不是就会把段之间的冗余有减小了呢?再试试看:添加选项:

  /merge:.data=.text /merge:.rdata=.text。再看看文件大小:1,328bytes。真的很不错了。

  6、刚才的设定确实不错,似乎达到了我们想要的极限了。但是回头想一下,如果没有CRT库的话,会不会更小了?实际上确实这样。添加连接选项: /entry:main,把入口地址直接指向我们的main函数看看。得到592Bytes。

  最终我们得到我们最后的大小592Bytes了。我想这也许是我们通过编译器能够编译
  出来的最小的代码了。

  结论:
  通过上述的步骤,我们了解了如何修改那些编译连接选项来达到执行文件瘦身的目的。但是,通常来讲,在我们的Release文件当中,并不需要如此小的执行文件。如果想达到瘦身的目的,修改为library:MutiThreaded Dll和添加/opt:nowin98已经是很好的选择了。其他别的选项在编译的时候或多或少的有警告出现,而且,带有那些编译选项编出来的执行文件也不一定在各个平台上能够适用。

  另外:如果你的执行文件即使通过了这些设定还是比较大的话,也可以通过一些EXE文件压缩工具来进行压缩。比如UPX等等。在此不再细说了。

  以上部分的不足之处,还请多多指正。


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品