怎么减小 STL 程序编译后的大小

abcdhy 2013-01-24 11:24:12
编写了一个最简单的 STL 测试程序,代码如下:

#include <iostream>
#include <string>
using namespace std;

int main()
{
string name;
cout << "请输入你的名字:";
cin >> name;
cout << "你好," << name << endl;
return 0;
}


运行正常,但发现就这么简单的代码,编译出来的 EXE 文件,居然有 800 多K ,真是吓死人了。
怎么才能减小使用STL程序的 EXE 文件大小呢? 谢谢!

环境: WINXP EditPlus + MinGW
编译参数为:g++.exe -o
...全文
388 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2013-01-25
  • 打赏
  • 举报
回复
-Os Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimiza- tions designed to reduce code size. 不是什么O1到O3
redleaves 2013-01-25
  • 打赏
  • 举报
回复
C++标准库中,最较垃圾的流占用了很大一部分空间. 你要用它,也只能忍了. mingw一般的分发版本是不包含动态库版本的libstdc++-v3的... 如果有动态库版本,你可以用-Bdynamic强制使用动态库版本的C/C++库. 另外,还请加上-s参数.去掉调试信息.gcc生成的调试信息都在目标文件内.很大的.
abcdhy 2013-01-25
  • 打赏
  • 举报
回复
看来是没办法了。
ForestDB 2013-01-24
  • 打赏
  • 举报
回复
这里有用STL?string? -Os Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimiza- tions designed to reduce code size. 试试呗。
mujiok2003 2013-01-24
  • 打赏
  • 举报
回复
引用 5 楼 abcdhy 的回复:
引用 3 楼 mujiok2003 的回复:代码表面挺少而已,试试Release版,选择动态链接。 STL 怎么动态链接? DLL 文件又是哪个?
动态链接CRT, 不是STL。STL是模板展开的,没有链接。
赵4老师 2013-01-24
  • 打赏
  • 举报
回复
现在硬盘和内存都不缺那800KB!
abcdhy 2013-01-24
  • 打赏
  • 举报
回复
引用 3 楼 mujiok2003 的回复:
代码表面挺少而已,试试Release版,选择动态链接。
STL 怎么动态链接? DLL 文件又是哪个?
zhcosin 2013-01-24
  • 打赏
  • 举报
回复
拿把剪刀,先把自己头发剪了,再把exe文件剪掉一半
mujiok2003 2013-01-24
  • 打赏
  • 举报
回复
代码表面挺少而已,试试Release版,选择动态链接。
jdwx 2013-01-24
  • 打赏
  • 举报
回复
哦,原来是mingw,换VC++编译器,体积会减小到一半。
唯恐天下不乱 2013-01-24
  • 打赏
  • 举报
回复
看看编译选项吧,是否有效率优先? 现在硬盘空间那么大,其实无所谓了。
abcdhy 2013-01-24
  • 打赏
  • 举报
回复
引用 10 楼 zhao4zhong1 的回复:
引用 9 楼 abcdhy 的回复:从 O1 到 O3 都用了,大小依旧。 不会染毒了吧。
这和染毒绝对没关系。
赵4老师 2013-01-24
  • 打赏
  • 举报
回复
引用 9 楼 abcdhy 的回复:
从 O1 到 O3 都用了,大小依旧。
不会染毒了吧。
abcdhy 2013-01-24
  • 打赏
  • 举报
回复
从 O1 到 O3 都用了,大小依旧。

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧