從上圖能夠看到:
預編譯
將.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