免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3344 | 回复: 10
打印 上一主题 下一主题

[C++] 为什么才十几行的C++小程序,编译好了也有475K? 怎么给exe减肥阿。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-10 21:12 |只看该作者 |倒序浏览
我用dev-c++写了一些小程序,就include <iostream>,
使用到cin, cout,
一般不超过30行,但是编译exe完成后,居然都超过450K,
谁能指点一下,怎样编译来减少exe文件的大小?

论坛徽章:
0
2 [报告]
发表于 2007-04-10 21:13 |只看该作者
debug改成release呢?

论坛徽章:
0
3 [报告]
发表于 2007-04-10 21:22 |只看该作者
这个debug和release在哪里修改阿? 赫赫,我初学。

论坛徽章:
0
4 [报告]
发表于 2007-04-10 21:25 |只看该作者
不用iostream,用cstdio,你一定会满意的。相信我

论坛徽章:
0
5 [报告]
发表于 2007-04-10 21:26 |只看该作者
恩,我试试看

论坛徽章:
0
6 [报告]
发表于 2007-04-10 21:31 |只看该作者
谢谢,果然有道理,
这是前后大小对比:
474,954 tf9.exe
  15,663 tf10.exe

论坛徽章:
0
7 [报告]
发表于 2007-04-10 22:37 |只看该作者
可能是加入了太多的接口了

论坛徽章:
0
8 [报告]
发表于 2007-04-11 00:07 |只看该作者
可不可以只include cstdio中的printf ,哈哈哈,
这样说不定能更小,

论坛徽章:
0
9 [报告]
发表于 2007-04-11 03:37 |只看该作者
原帖由 i802 于 2007-4-10 08:07 发表
可不可以只include cstdio中的printf ,哈哈哈,
这样说不定能更小,


自己写汇编,可以更小:

  1. ;; hello.asm
  2. section .data
  3. msg:    db "Hello World"
  4. len:    equ $-msg
  5. section .text
  6. global _start
  7. _start:
  8.     mov edx,len
  9.     mov ecx,msg
  10.     mov ebx,1                   ; write to stdout
  11.     mov eax,4                   ; write system call
  12.     int 0x80
  13.     mov ebx,0
  14.     mov eax,1                   ; exit system call
  15.     int 0x80
复制代码


  1. nasm -felf -o hello.o hello.asm
  2. cc -nostdlib -o hello hello.o
  3. ./hello
  4. Hello World
复制代码


  1. ls -l hello
  2. -rwx------    1 emacsnw   csgrads       870 Apr 10 12:32 hello*
复制代码


当然,裸写elf文件还能更小,不过这个应该可以了。

论坛徽章:
0
10 [报告]
发表于 2007-04-11 05:42 |只看该作者
libstdc++.a 是静态的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP