gcc的编译流程

(1)预处理阶段(.c ----> .i)

预处理器会处理所有的以#开头的命令,这些都属于预处理命令,也就是会将所有的头文件包含的东西插入到源文件中,将所有定义的宏都在程序中展开。还有一点是会处理注释部分,用空格来代替注释。

(2)编译阶段(.i ----> .s)

编译器会对预处理过后的代码进行一个语法的分析和检查,符合规则地程序就会被转化成汇编代码。

这一步有两处我要说的,其一,如果程序有错误,在编译阶段就会报错

其二,也可能只是我个人原因,我老是会将此阶段和下一个汇编阶段弄混,注意此处虽是生成汇编代码,但却不是汇编阶段

(3)汇编阶段(.s ----> .o)

汇编器会将上一步所生成的汇编代码翻译成计算机所能识别的机器码,并生成标文件

(4)链接阶段 (.o ----> 可执行文件)

链接器会将所有所用到的目标文件链接到一起,最终形成一个可执行文件


最后我还想说两句,可能很多人也知道

关于头文件#include<>与#include" "

#include<>直接从编译器指定的路径去搜索

#include" "先在程序当前指定的路径去搜索,然后再去编译器指定的路径去搜索

所以,一般如果自已定义头文件,则需要用#include" ",需自己指定搜索路径。还有回想一下自己在使用编译器自带的库时,是否也写过#include"stdio.h"这种类似的,当然,这不会报错,但实际上是多做了一次无用功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翔在天上飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值