c语言程序的执行过程经历哪几个步骤,C语言编译过程的4个步骤

GCC 编译器在编译一个C语言程序时需要经过以下 4 步:

(1)将C语言源程序预处理,生成.i文件。

(2)预处理后的.i文件编译成为汇编语言,生成.s文件。

(3)将汇编语言文件经过汇编,生成目标文件.o文件。

(4)将各个模块的.o文件链接起来生成一个可执行程序文件。

1.预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。

伪指令主要包括以下四个方面:

(1)宏定义指令,如#define Name TokenString,#undef等。对于前一个伪指令,预编译所要作得的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现不再被替换。

(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉。

(3)加载头文件,如#include "FileName"或者#include 等。采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。包含到c源程序中的头文件可以是系统提供的,这些头文件一般被放在/usr/include目录下。在程序中#include它们要使用尖括号(<>)。另外开发人员也可以定义自己的头文件,这些文件一般与c源程序放在同一目录下,此时在#include中要用双引号("")。

预编译是将.c 文件转化成 .i文件,

重定向使用的gcc命令是:gcc –E hello.c >hello.i

在预处理阶段是不做语法检查的。

你可能感兴趣的:(c语言程序的执行过程经历哪几个步骤,C语言编译过程的4个步骤)