DevC++开发程序大瘦身

以前都是用的VC6.0,这几天换到了DEVC++,发现程序的编译,链接的速度会明显下降,所以,这里就找了找原因。


下面是转自,先学习一下。

http://blog.csdn.net/luck_wei/article/details/5216921 

这两天使用了一下“DevC++”,发现编译出来的可执行文件体积相对(相对使用VS6)比较大(一个简单的控制台程序使用C++语言,编译连接后生成了一个400多KB的可执行文件。)。我就想试着找找问题的原因,看看能不能对可执行文件的体积进行优化。

      我的第一个目标是对连接进行优化:打开工程选项->编译器->连接器 选择不产生调试信息(默认选择) 选择剥除附加信息(默认不选择)。      编译连接后可执行文件的体积比原来小了200kB。

      不错有了一定的改进,再想想。我用十六进制编辑器打开可执行体看了看,奇怪怎么有这么多的C++的标准基类操作例如:basic_string::at 还有一些时间日期的常量如:AM PM Sunday  Sun等等。还有一些常见的文件操作:fopen fputc。

     看到这些我心中有些想法就是为什么会有这些东西?这些东西在本程序中可是没有用到的呀?我就开始猜测,是不是因为DevC++使用的是GCC的编译器所以会这样子,而这些看起来如同标号一样的东西是不是就是iostrem库的静态连接//目前是这么认为的,等我看了Load+Link后可能就会知道这是什么东东了。

     看来是不能再优化了,总不能把静态的连接库给去掉吧。//如果有时间要仔细研究一下GCC的参数,应该还可以进行优化。

     再想想,再想想。对了这里面如果确是C++的部分标准库代码,那么如果使用C代码的话编译连接出来的可执行文件大小应该会有所变化。继续战斗:我又用C写了一次代码,进行编译连接。完成后运行,没有问题;再看看执行体的大小,17KB。我的天啊,怎么这么小!

   

    经过这几步的测试,进行一下总结。

    首先我有几个猜测:

    第一、GCC在Windows下的实现,可执行体中包括一定量的标准库二进制代码。

    第二、VC可能通过动态库大大的减小了可执行文件的大小。

    第三、C代码体积比C++要小很多,是由于C不具有C++许多对于面向对象功能的原生支持。

    其次以后开发程序的时候有注意:

    第一、使用C实现,可以有效的减小可执行体的体积。//如有需要

    第二、软件规模大了以后多使用动态连接库实现功能,可以有效的减小可执行体的体积并可以对部分功能进行升级。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值