C语言从入门到精通之【编译过程】

!!!本文内容毕业生面试必问哈。

编译过程

编译包含四个阶段,预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)构成了编译系统。

C语言从入门到精通之【编译过程】_第1张图片

预处理将.c文件编程.i文件;

编译将.i文件变成.s文件;

汇编将.s文件编程.o文件;

链接将所有.o文件(目标代码、系统的标准启动代码和库代码)生成可执行文件;

前3个步骤我们都称之为编译,所以,C代码通过编译和链接生成可执行文件

C 使用这种分而治之的方法方便对程序进行模块化,可以独立编译单独的模块,稍后再用链接器合并已编译的模块。

这里对汇编器生成的文件描述以下,.o文件我们称之为目标文件,此时它还不能使用,为什么呢?

因为它只是编译器翻译出来的源代码,它还缺失了启动代码库代码,启动代码充当着程序和操作系统之间的接口。库函数如printf,目标代码文件并不包含该函数的代码,它只包含了使用 printf()函数的指令。printf()函数真正的代码储存在另一个被称为库的文件中。库文件中有许多函数的目标代码。

C语言从入门到精通之【编译过程】_第2张图片


什么叫模块化?

比如说led.c作为1个模块,key.c作为一个模块,他们是单独的独立编译,然后再链接到一个可执行文件。这也是符合软件高内聚、低耦合的思想。

你可能感兴趣的:(C语言从入门到精通,c语言,开发语言,linux,嵌入式,驱动开发,笔记)