首页 » 信息技术 »

gcc编译过程的4个步骤

2019年2月12日 / 59次阅读
CC++

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

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

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

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

本文链接:https://www.maixj.net/ict/gcc-compile-20096

相关文章

留言区

《gcc编译过程的4个步骤》有3条留言

  • 麦新杰

    再次强调,编译是针对一个源文件的,有多少个源文件就需要编译多少次,就会生成多少个目标文件。最后由linker将这些.o文件打包在一起,形成可执行文件。 []

  • 麦新杰

    编译是正对单个.c文件的,生成对应的.o文件,链接的时候,再讲多个.o文件合并在一起,形成可执行文件。 []

  • 麦新杰

    预处理,对#开始的语句进行处理,#include展开头文件,#define 定义宏和宏替换,#ifdef,#ifndef,#endif,用来控制预处理和编译的代码区间。预处理语句后面没有分号。 []


前一篇:
后一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top