初始GCC编译器之预处理

来源:互联网 发布:远控王远程控制软件 编辑:程序博客网 时间:2024/05/29 08:30

1 GCC简介

目前LInux下最常用的C语言编译器是GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、和Ada等多种语言,而且gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译.

在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。 简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。


2 GCC编译程序的四个阶段  

.预处理(Pre-Processing);

.编译(compiling);

.汇编(Assembing);

.链接(Linking)。


1>预处理阶段 

预处理阶段完成头文件替换,宏替换,条件编译。

Ⅰ.头文件替换

首先用熟悉的编辑器输入test.c所示代码



输入预处理命令,生成test.i文件。



打开test.i发现文件头已经展开,截取一部分如下。




Ⅱ.宏替换

将text.c修改为如下程序











输入预处理命令打开生成的test.i发现文件完成了头文件展开和宏替换,截取最后部分如下。





Ⅲ条件编译

将test.c文件修改如下



输入预处理命令,打开生成的test.i文件发现头文件展开,宏替换和条件编译,截取最后部分如下。





2>编译阶段

输入编译命令


语法检查,生成.o文件。


3>汇编阶段

输入汇编命令


生成 .s文件


4>链接阶段

输入命令



链接阶段的任务就是把程序中所有的目标文件和所需的库文件链接到一起,最终生成一个可以执行的文件,称为可执行文件。执行该文件就可以得到test文件的运行结果。









0 0
原创粉丝点击