将gcc将c语言源码最终编译成能够让机器执行的机器码主要经历了4个过程,为了执行该过程将演示helloworld.c代码的编译过程,代码如下:
#include<stdio.h>
#define TEST
int main(int argc,char **argv)
{
#ifdef TEST
printf("test -E");
#endif
printf("Hello world\n");
return 0;
}
gcc代码处理流程如下:
1.预编译
gcc -E helloworld.c -o hello.i
编译后查看hello.i中的内容,最后几行被修改为如下
int main(int argc,char **argv)
{
printf("test -E");
printf("Hello world\n");
return 0;
}
宏定义的内容被去除了
2.编译生成汇编
gcc -s hello.i -o hello.s
3.编译生成机器码
gcc -c hello.s -o hello.o
4.链接
gcc hello.o - o hello
最后生成的文件hello为可执行文件