C语言学习:C语言编译流程

回顾下C语言编译流程

在Linux操作系统下,.c文件通过gcc编译器转换成可执行文件.out

在Windows操作系统下,.c文件在集成环境下转换成可执行文件.exe

本质上两个操作系统下的编译过程都是一样的,都是经过预处理、编译、汇编和链接四个流程,如下图所示:

Linux系统下:

使用gcc编译器进行

1、预处理

 cat main.i文件后发现 

进行预处理工作  不会自动生成文件

去掉了注释内容

字符替换

把带 # 的内容如(宏,头文件)条件编译

把“stdio.h”文件包含进来,即用“stdio.h”中的内容替换在“#include”位置 

2、编译

由.i文件到.s文件,这个过程叫编译。把高级的语言转换成机器能读懂的语言,即机器语言

简单来说,源文件被预处理之后,再以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令、生成相应的汇编文件。 

检查源代码或者经过预处理之后代码是否有错误

3、汇编

把main.s由.s文件到.o文件,这个过程叫汇编。汇编是指把汇编语言代码翻译成目标机器指令的过程,也就是把汇编码转换成机器所能识别的二进制,通过把经过汇编之后生成的文件称为目标文件。

4、链接

 链接一个或者多个目标文件生成可执行程序   默认是a.out

-o 重命名

gcc *.o     链接所有的目标文件 生成 可执行程序

由.o文件到可执行文件,这个过程叫链接。经过汇编之后生成的目标文件并不能立即被执行,还需要由链接器将代码在执行过程中用到的其他目标代码及库文件进行链接,最终生成一个可执行程序。

假如.c文件中有用到printf函数,那么就需要找到包含该函数的标准库文件,对它进行链接。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值