GCC编译的四个过程分别为:预处理->编译->汇编->链接
1、预处理阶段:使用 gcc -E hello.c -o hello.i 预处理阶段完毕之后就停止编译。hello.i就是预处理之后的的文件
其中预处理过程主要是对要编译的c文件的头文件做一个处理,将#开头的头文件内容告诉处理器。
2、编译阶段:gcc -S hello.i -o hello.s 只进行编译这个阶段之后结束编译,hello.s就是编译之后的汇编代码。
编译阶段主要是检查代码的规范性,以及是否有语法错误等,检查有误则报错,检查无误则将c语言编译成汇编代码。
3、汇编阶段:gcc -C hello.s -o hello.o 只进行汇编这个阶段。
汇编阶段就是将汇编代码转换成二进制的目标代码。
4、链接:gcc hello.o -o hello 生成可执行的二进制文件
链接过程就是链接静态库和动态库的过程,链接静态库的时候,系统会自动寻找/usr/lib下的所有静态库来实现c文件中要实现的函数,动态库需要-L来链接。