从上图能够看到:
预编译
将.c 文件转化成 .i文件
使用的gcc命令是:gcc –E
对应于预处理命令cpp
编译
将.c/.h文件转换成.s文件
使用的gcc命令是:gcc –S
对应于编译命令 cc –S
汇编
将.s 文件转化成 .o文件
使用的gcc 命令是:gcc –c
对应于汇编命令是 as
连接
将.o文件转化成可执行程序
使用的gcc 命令是: gcc
对应于连接命令是 ld
总结起来编译过程就上面的四个过程:预编译处理(.c) --> 编译、优化程序(.s、.asm)--> 汇编程序(.obj、.o、.a、.ko) --> 连接程序(.exe、.elf、.axf等)
java
注:以上所有参考C语言编译全过程介绍,下面给出本身的实验,至于对理论没清楚的多搜搜资料
shell
编译以前,建立一个名字为testCompile.c的源文件程序,并保存编程
$ vi testCompile.c
$ clang -E testCompile.c -o testCompile.i
$ clang -S testCompile.i -o testCompile.s
$ clang -c testCompile.s -o testCompile.o
$ clang testCompile.o -o out