社区
C语言
帖子详情
编译出来的.exe大小和什么有关?
sendltd
2007-01-16 10:20:46
是什么影响最后编译出来的文件大小?
(全局)变量大小对解决有影响吗?
...全文
911
26
打赏
收藏
编译出来的.exe大小和什么有关?
是什么影响最后编译出来的文件大小? (全局)变量大小对解决有影响吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
26 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tom56
2007-03-04
打赏
举报
回复
全局变量如果定义时初始化了,会增大文件的大小,跟代码量有关系。
未初始化的变量不会占用exe文件大小,当然跟编译选项也有关系,有的编译选项可以生产压缩型文件。
merlinfang
2007-03-04
打赏
举报
回复
与code和全局变量,静态变量等相关
如果全局变量,静态变量多且大的话,大都库的大小和其差不多了
lei001
2007-03-04
打赏
举报
回复
与code和全局变量,静态变量等相关
迷你苑
2007-03-04
打赏
举报
回复
包含的内容太多
Arthur_
2007-03-03
打赏
举报
回复
一般Debug配置,在prog2中:
_DATASEGMENT
?ar@@3PAHA DD01H; ar
DD02H
DD03H
ORG $+1199988
_DATAENDS
在prog1中:
_BSSSEGMENT
?ar@@3PAHA DD0493e0H DUP (?); ar
_BSSENDS
区别很明显吧,呵呵,总结一下:
全局的未初始化变量存于.bss段中,
全局的已初始化变量存于.data段中,
函数内的自动变量都在栈上分配空间。
.data段占用文件空间,而.bss段和stack是不占用文件空间的
==============================
静态变量位于那个段?
Arthur_
2007-03-03
打赏
举报
回复
是否使用了宏,代码是否优化
AAdai
2007-03-03
打赏
举报
回复
试了一下,用的VC2005
prog1: debug版:1478656B release版:1216512B
prog2: debug版:40960B release版:20480B
奇怪,怎么会相差这么大呢?
blue_zyb大哥(大姐)能不能给讲讲,谢谢了
怎么查看呀
todototry
2007-03-03
打赏
举报
回复
mark
iambic
2007-03-03
打赏
举报
回复
>>另外,有人说不用关心目标代码的大小,这个观点不是错,但是狭隘了。
>>Win32下可以这么说,但是在16bit的系统中开发程序就会遇到64K的问题。
确实是狭隘了。应该加个限定时间:二十一世纪。
FreshBird
2007-03-03
打赏
举报
回复
学习...
vanter
2007-03-01
打赏
举报
回复
让编译器产生.map文件,就可以看到目标程序中各个段中放了什么东西,及其大小。
从而可以通过修改程序达到缩小目标代码大小的目的了。
以我做过的项目为例子,我找到了.map文件中同时存在malloc和calloc的代码段,我就把我程序中的malloc都用calloc替代掉,不但可以省去memset,而且可以节约malloc占用掉的代码段的空间。
另外,有人说不用关心目标代码的大小,这个观点不是错,但是狭隘了。Win32下可以这么说,但是在16bit的系统中开发程序就会遇到64K的问题。
x2304
2007-02-25
打赏
举报
回复
和链接进的资源多少也有关。
bombwang
2007-02-24
打赏
举报
回复
路过
guoshanhe
2007-02-24
打赏
举报
回复
谢谢楼上的各位了!
neoragex2002
2007-02-22
打赏
举报
回复
一般Debug配置,在prog2中:
_DATA SEGMENT
?ar@@3PAHA DD 01H ; ar
DD 02H
DD 03H
ORG $+1199988
_DATA ENDS
在prog1中:
_BSS SEGMENT
?ar@@3PAHA DD 0493e0H DUP (?) ; ar
_BSS ENDS
区别很明显吧,呵呵,总结一下:
全局的未初始化变量存于.bss段中,
全局的已初始化变量存于.data段中,
函数内的自动变量都在栈上分配空间。
.data段占用文件空间,而.bss段和stack是不占用文件空间的
无忧石头
2007-02-22
打赏
举报
回复
如果你是用vc的话,那跟你选择的优化选项有关系,如果你选择最小尺寸,那编译出来的应该是最小的
neoragex2002
2007-02-22
打赏
举报
回复
呵呵,用cl中的/FA选项生成一下汇编代码,自己看吧
w2001
2007-02-22
打赏
举报
回复
prog1里面的ar[300000]除了前6个要预设初值之外,剩下的300000-6个int也要赋成0值,so直接是当作常量区直接编进程序的,prog2不需定义常量,简单了,直接修改偏移即可
guoshanhe
2007-02-20
打赏
举报
回复
blue_zyb() ( ) 信誉:100 Blog 2007-1-17 10:59:04 得分: 0
----------------------------------------------------------------
lz可以试着生成下面两个小程序对应的exe,看一下谁占的内存多
prog1:
int ar[300000] = {1, 2, 3, 4, 5, 6 };
void main()
{
...
}
prog2:
int ar[300000];
void main()
{
...
}
////////////////////////////////////////////////////////////////////
试了一下,用的VC2005
prog1: debug版:1478656B release版:1216512B
prog2: debug版:40960B release版:20480B
奇怪,怎么会相差这么大呢?
blue_zyb大哥(大姐)能不能给讲讲,谢谢了
htqx
2007-02-19
打赏
举报
回复
编译环境有关。
加载更多回复(6)
STM
编译
工具STVD补丁包mapinfo.
exe
STM8
编译
的软件环境工具STVD,存有不能查看
编译
代码
大小
缺点,打入补丁mapinfo即可
超强
EXE
资源修改器(骇客修改器)
一个类似于
eXe
Scope的但在某些方面比它还好一些的工具。1. 查看 Win32 可执行和相关文件的资源 (*.
exe
, *.dll, *.cpl, *.ocx),在已
编译
和反
编译
的格式下都可以。2. 提取 (保存) 资源到文件 (*.res) 格式,作为二进制,或作为反编过的译资源脚本或图像。图标,位图,指针,菜单,对话,字符串表,消息表,加速器,Borland 窗体和版本信息资源都可以被完整地反
编译
为他们各自的格式,不论是作为图像或 *.rc 文本文件。3. 修改 (替换) 可执行文件的资源。图像资源 (图标,指针和位图) 可以被相应的图像文件 (*.ico, *.cur, *.bmp),*.res 文件,甚至另一个 *.
exe
文件所替换。对话,菜单,字符串表,加速器和消息表资源脚本 (以及 Borland 窗体) 可以通过使用内部资源脚本编辑器被编辑和重新
编译
。资源也可以被一个 *.res 文件所替换,只要替换的资源与它是同一类型并且有相同的名称。4. 添加新的资源到可执行文件。允许一个程序支持多种语言,或者添加一个自定义图标或位图 (公司的标识等) 到程序的对话中。5. 删除资源。大多数
编译
器添加了应用程序永远不会用到的资源到应用程序中。删除这些不使用的资源可以减小一个应用程序的
大小
。
理解kernel Makeiflie
编译
12年嵌入式开发,一直在一线做产品研发, 深深明白,看懂
编译
流程,掌握代码是如何
编译
非常重要做一个芯片方案,从拿到资料和代码开始,第一件事就是
编译
代码,解决
编译
问题另外,看懂代码也必须看懂
编译
过程,哪些参与
编译
,哪些在什么条件
编译
其次,根据不同产品方案,一定要修改代码,不可避免要修改
编译
脚本很多同学只懂得简单的添加一个
编译
驱动,如何选择配置文件,内核这套
编译
体系工作的本质非常模糊或者不清楚。本课程分析内核vmlinux生成规则, 单个文件如何生成,内核模块的生成, 整个kernel的
编译
体系, 让你对内核有更深入的掌握。
vs怎么把c语言生成
exe
文件格式,VS2010静态
编译
生成.
exe
可执行文件
VS2010静态
编译
生成的.
exe
可执行文件,可以免安装在其他电脑直接运行静态
编译
:就是在
编译
可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库。
编译
方式:第1种:设置:1、项目->配置属性->常规->MFC的使用:在静态库中使用MFC2、项目 -> 配置属性->C/C++-...
VS2010静态
编译
生成的.
exe
可执行文件
VS2010静态
编译
生成.
exe
可执行文件 VS2010静态
编译
生成的.
exe
可执行文件,可以免安装在其他电脑直接运行 静态
编译
:就是在
编译
可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖动态链接库。
编译
方式: 第1种: 设置: 1、项目->配置属性->常规->MFC的使用:在静态库中使用MFC 2、项目 -> 配置属性->C/C++->代码生成->运行库 :选择
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章