C语言入门了解篇(面试常见问题)(C)语言编译流程

C语言简介-C语言编译过程

(面试常见问题)

当我们安装好集成环境后,编写一个.c文件,按下图中红框内的按钮,即“编译运行”,就可以得到一个后缀为“.exe”的可执行C程序文件。在此期间,不仅有一个过程,而且分别经历了预处理、编译、组装和链接四个过程。

下图显示了一个 C 程序的编译过程。

上述过程可以包括为:高级语言->汇编语言->机器语言(二进制)

1.预处理

从 .c 文件到 .i 文件,这个过程称为预处理。在编译源文件之前,首先要进行预处理工作,即对源代码进行相应的扩展、替换和清理。

①在这个过程中,主要要处理的事情有:

②去掉代码的注释部分,不让它参与编译

图片[1]-C语言入门了解篇(面试常见问题)(C)语言编译流程-老王博客

③ 删除所有#defines,展开所有宏定义,就是简单的字符替换

④ 处理所有的条件编译指令,如#ifdef、#ifndef、#endif,总之,带#的

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

2.编译

从 .i 文件到 .s 文件,这个过程称为编译。编译的过程本质上是将高级语言翻译成机器语言的过程。简单来说就是源文件经过预处理后,以字符流的形式进行处理,进行词法和语法分析高级语言程序设计(c语言描述)第2版,然后通过汇编器将源代码指令转换成汇编指令,生成对应的汇编文件.

3.组装

从 .s 文件到 .o 文件,这个过程称为汇编。汇编是指将汇编语言代码翻译成目标机器指令的过程,即将汇编代码转换成机器可以识别的二进制,汇编后生成的文件称为目标文件。

4.链接

从.o 文件到可执行文件高级语言程序设计(c语言描述)第2版,这个过程称为链接。汇编后生成的目标文件不能立即执行,链接器还需要链接其他目标代码和代码执行中用到的库文件,最终生成可执行程序。

如果在.c文件中使用了printf函数,则需要找到包含该函数的标准库文件并链接。

没想到IDE帮我们处理了这么多事情。作为工程人员,我们也需要了解编译过程,这是面试中常见的问题。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论