以下文章来源于:公_众_号开源电子网
读取更多技术文章,请扫码关注
C语言入门了解篇—C语言编译流程
(面试常见问题)
前言
当我们安装了集成环境之后,编写.c文件,一按下图红色框框的按键即“编译并运行”,就可以得到一个“.exe”后缀的可执行的C程序文件,这期间并非只有一道工序,而是分别经过了预处理、编译、汇编和链接四个流程。
下图就是C程序的编译流程。
以上过程就是可以囊括为:高级语言汇编语言机器语言(二进制)
1、 预处理
由.c文件到.i文件,这个过程叫预处理。在源文件被编译前,首先要进行预处理的工作,也就是对源代码进行相对应的展开、替换和清理。
在这个过程中,主要处理的事情:
① 把代码注释部分去掉,不让其参与编译
② 将所有的#define删除,并且展开所有的宏定义,简单来说就是字符替换
③ 处理所有的条件编译指令,例如#ifdef、#ifndef、#endif,简单来说就是带#的那些
④ 把“stdio.h”文件包含进来,即用“stdio.h”中的内容替换在“#include<stdio.h>”位置
2、 编译
由.i文件到.s文件,这个过程叫编译。编译的过程实质上是把高级语言翻译成机器语言的过程。简单来说,源文件被预处理之后,再以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令、生成相应的汇编文件。
3、 汇编
由.s文件到.o文件,这个过程叫汇编。汇编是指把汇编语言代码翻译成目标机器指令的过程,也就是把汇编码转换成机器所能识别的二进制,通过把经过汇编之后生成的文件称为目标文件。
4、 链接
由.o文件到可执行文件,这个过程叫链接。经过汇编之后生成的目标文件并不能立即被执行,还需要由链接器将代码在执行过程中用到的其他目标代码及库文件进行链接,最终生成一个可执行程序。
假如.c文件中有用到printf函数,那么就需要找到包含该函数的标准库文件,对它进行链接。
想不到IDE帮我们处理了这么多事情吧,作为工科男,我们也有必要了解这个编译流程,并且这个是面试常见的问题。后面开始正式进入C语言篇章学习。