简单来说,我们从源文件到可执行文件要经历四大阶段:预处理阶段、编译阶段、汇编阶段、链接阶段。在Linux中,程序员可以根据自己的需要让GCC在编译的任何阶段结束,并生成相应的文件
此处以hello.c作为例子
<span style="font-size:24px;">#include<stdio.h>
int main()
{
printf("hello world!");
return 0;
}</span>
1.预处理阶段:对以#开头的语句进行处理,且不进行语法的检查
预处理阶段主要完成的三个功能:①加载头文件--Linux系统中的头文件在 /user/include/stdio。
<span style="font-size:24px;">#include<stdio.h> //把头文件stdio.h中的内容加载到hello.c中的首部</span>
②宏替换
<span style="font-size:24px;"> #define N 10</span>
③条件处理--#ifdef,#else,#endif
<span style="font-size:24px;"> #include<stdio.h>
#define N 10
int main()
{
#ifdef N
printf("hello world!");
#else
printf("welcome to you!");
#endif
return 0;
}</span>
2.编译阶段:对程序进行语法分析,词法分析,语义分析
<span style="font-size:24px;"> gcc -S hello.i -o hello.s //生成.o文件</span>
3.汇编阶段:把汇编程序翻译成CPU可识别识别的二进制文件,该文件又称为目标文件
<span style="font-size:24px;"> gcc -c hello.s -o hello.o //生成.s文件</span>
4.链接阶段:把程序中所有木匾文件和所需要库文件都链接在一起,最终生成一个可以直接运行的文件,称为可执行文件。
<span style="font-size:24px;"> gcc hello.o -o hello //生成可执行文件</span>
<span style="font-size:24px;"> ./hello // 执行该文件</span>
小编初来乍到很多方面都写的不好,推荐下列博文哦,希望能帮到大家(*^__^*) 嘻嘻……点击打开链接http://www.cnblogs.com/Goldworm/archive/2012/05/21/2511910.html