一个exe程序的生成过程

首先我们写了一个main.c的程序,点击执行的时候 ,会有四个步骤,分别是预编译/预处理,编译,转汇编,链接。

首先是预编译,也叫预处理,我们在vs code上演示一下,使用命令 gcc main.c -E -o main.i

8baa6be2016045f9b84233b0e4358dfb.png

 

gcc 是编译器 main.c是你要编译的文件名字 —E是编译到预处理就停止的指令,-o是指定输出为一个文件,后面加文件名,ls是把文件夹里面的文件都显示出来,这时候会发现多了一个main.i文件,这是我们通过指令生成的一个运行到预处理就停止的文件,我们可以看到,我们只写了几行代码,但是生成的.i文件,却有几百行代码,这是因为,我们包含了一个头文件,stdio.h,在预处理,把头文件全部包含进来,注释也会被删除,宏也会全部替换。78e5fd3de93a4853a389d397875d7d8e.png

这是预处理的大概。

接下来到了编译,我们用命令 gcc main.i -S 会生成一个main.s的文件,这个命令是让编译器,运行到编译这个步骤就停下来,编译这个步骤,是把我们写的C语言代码转换成汇编代码,他会进行语法分析,词法分析,符号汇总,语义分析,非常复杂,想详细了解的可以去看一本书,《程序员的自我修养》。

aaab21dd6c5d433981b489f4b27d39d1.png

3ba4400aa89447108b4044040dff1bed.png

 

接下来是到了汇编步骤,这一步是把汇编代码转二进制,我们用命令 gcc  main.s -c 生成了test.o文件

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值