- 一、简介
- 二、GCC程序编译过程
- 三、程序编译过程
- 1、代码如下
- 2、编译
- (1)在控制台输入vi test.c
- (2)执行命令:gcc -o test test.c
- 3、分步编译
- (1)预处理
- (2)编译
- (3)汇编
- (4)连接
- 四、个人总结
- 五、参考文献
GCC的意思也只是GNU C Compiler而已。经过了这么多年的发展,GCC已经不仅仅能支持C语言:它现在还支持Ada语言、C++语言、Java语言、ObjectiveC语言、Pascal语言、COBOL语言,以及支持函数式编程和逻辑编程的Mercury 语言,等等。而GCC也不再单只是GNUC语言编译器的意思了,而是变成了GNU Compiler Collection也即是GNU编译器家族的意思了。另一方面,说到GCC对于操作系统平台及硬件平台支持,概括起来就是一句话:无所不在。
二、GCC程序编译过程共分四个阶段进行
1、预处理(Pre-Processing)
2、编译(Compiling)
3、汇编(Assembling)
4、链接(linking)
//test.c #includeint main(viod) { printf("Hello word!n"); return 0; }
一步到位编译指令:gcc test.c -o test
2、编译 (1)在控制台输入vi test.c
gcc -E test.c -o test.i 或gcc -E test.c
可以输出HelloWorld.i文件中存放着HelloWorld.c经预处理之后的代码。打开HelloWorld.i文件,看一看,就明白了。后面那条指令,是直接在命令行窗口中输出预处理后的代码.
gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。在本例中,预处理结果就是将stdio.h 文件中的内容插入到HelloWorld.c中了。
(2)编译预处理之后可直接对生成的test.i文件编译,生成汇编代码:gcc -s test.i -o test.s
gcc的-S选项,表示在程序编译期间,在生成汇编代码后,停止,-o输出汇编代码文件。
生成汇编代码文件HelloWorld.s以后,需要gas汇编器负责将其编译为目标文件,如下:
$ gcc –c test.c
或者:
$ gcc -c test.c –o test.o
或者:
$ gcc -c test.i -o test.o
$ gcc test.o –o test 生成连接,可执行文件(HellWorld重新生成的可执行文件)
gcc连接器是gas提供的,负责将程序的目标文件与所需的所有附加的目标文件连接起来,最终生成可执行文件。
附加的目标文件包括静态连接库和动态连接库。
对于上一小节中生成的test.o,将其与C标准输入输出库进行连接,最终生成程序test可执行文件
输入命令:gcc test.o –o test
四、个人总结通过对gcc编译四个过程的学习,更加充分的深入了解的gcc编译背后的原理和故事
五、参考文献https://blog.csdn.net



