gcc 的编译过程
首先我们写一个简单的练习,命名为exercise1.c
#include <stdio.h>
int main(int argc, char const *argv[])
{
printf("Goodbye, Dannis!\n");
return 0;
}
-
直接编译:
exercise1.c——> 可执行文件exercise1gcc -o exercise1 exercise1.c -
预处理:
exercise1.c——>exercise1.igcc -E exercise1.c -o exercise.i注意:
gcc -E exercise1.c即是预处理,-o指定了预处理之后的文件存放的位置。如果去掉-o exercise.i,预处理之后的内容将直接显示在命令行![exercise1.s文件内容]()
上图是exercise1.i文件内容,我们可以看到#include <stdio.h>被替换成了stdio.h的文件内容 -
编译:
exercise1.i——>exercise1.sgcc -S exercise1.i![exercise1.o文件内容]()
上图是exercise1.s文件内容,已经是汇编代码了
-
汇编:
exercise1.s——>exercise1.ogcc -c exercise1.s![exercise1.o文件内容]()
上图是exercise1.o文件内容,已经被翻译成了机器码
-
链接:
exercise1.o——> 可执行文件exercise1gcc exercise1.o -o exercise1
update at 2017/9/20
by 一颗球




浙公网安备 33010602011771号