1. gcc简介
gcc/g++是GNU工程的C和C++编译器。都要用四个步骤中的一个或多个处理输入文件。
· 预处理(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文件。