结合“hello world”探讨gcc编译程序的过程

2014-11-24 09:02:02 ? 作者: ? 浏览: 0

1. gcc简介



gcc/g++GNU工程的CC++编译器。都要用四个步骤中的一个或多个处理输入文件。


· 预处理(preprocessing)


· 编译(compilation)


· 汇编(assembly)


· 连接(linking)



源文件后缀名标识源文件的语言,但是对编译器来说,后缀名控制着缺省设定。


gcc命令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件]



gcc的详细内容,可参考gcc manual



2. gcc的输出选项



gcc输出选项,-o后指定输出文件名,gcc解释如下。





3. "hello wolrd"的处理过程



本文以"hello world"程序,探讨GCC编译程序的过程。



hello.c文件内容如下。





3.1 预处理(preprocessing)



在该阶段,编译器将C源代码中的包含的头文件如stdio.h编译进来,可以使用gcc的选项”-E”进行查看预处理结果。



Gcc manual中对-E选项的解释如下。





格式:gcc -E hello.c -o hello.i


作用:对hello.c进行预处理输出为hello.i文件



Hello.c被预处理后的hello.i文件。





3.2 编译(compilation)



在这个阶段中,Gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,Gcc把代码翻译成汇编语言。可以使用”-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。



Gcc manual中对-S选项的解释如下。





格式:gcc –S hello.i –o hello.s


作用:将预处理输出文件hello.i汇编成hello.s文件



Hello.i被汇编后的hello.s文件。




-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: