linux gcc编译c文件头文件,使用GCC编译器编译C语言
GCC編譯C源代碼有四個步驟:預(yù)處理—->編譯—->匯編—->鏈接。
可以利用GCC的參數(shù)來控制執(zhí)行的過程,這樣就可以更深入的了解編譯C程序的過程。
下面將通過對一個程序的編譯來演示整個過程。
#include
int main()
{
printf("happy new year!\n");
return 0;
}
1:預(yù)處理:編譯器將C程序的頭文件編譯進(jìn)來,還有宏的替換,可以用gcc的參數(shù)-E來參看。
預(yù)處理 命令:gcc -E hello.c -o hello.i
作用:將hello.c預(yù)處理輸出hello.i
2:編譯:這個階段編譯器主要做詞法分析、語法分析、語義分析等,在檢查無錯誤后后,把代碼翻譯成匯編語言。可用gcc的參數(shù)-S來參看。
編譯器(ccl)將文本文件hello.i 翻譯成文本文件hello.s, 它包含一個匯編語言程序。匯編語言程序中的每條語句都以一種標(biāo)準(zhǔn)的文本格式描述了一條低級機(jī)器語言指令。
編譯命令:gcc -S hello.i -o hello.s
作用:將預(yù)處理輸出文件hello.i匯編成hello.s文件
3:匯編:把編譯階段生成的.s 文件轉(zhuǎn)換為二進(jìn)制目標(biāo)代碼。可用gcc的參數(shù)-c來參看。匯編器(as)將hello.s翻譯成機(jī)器語言指令,把這些指令打包成可重定位目標(biāo)程序的格式, 并將結(jié)果保存在目標(biāo)文件hello.o中。hello.o文件是一個二進(jìn)制文件,它的字節(jié)編碼是機(jī)器語言。
匯編 命令:gcc -c hello.s -o hello.o
作用:作用:將匯編輸出文件hello.s編譯輸出hello.o文件
4:鏈接:把obj文件鏈接為可執(zhí)行的文件:鏈接器(ld)負(fù)責(zé).o文件的并入。結(jié)果就是hello文件,它是一個課執(zhí)行的目標(biāo)文件,可以加載到存儲器后由系統(tǒng)調(diào)用。
鏈接命令:gcc hello.o -o hello
一步操作的話是: (-o必須在hello之前 )
$gcc hello.c -o hello
$./hello或者:(會默認(rèn)生成a.out文件)
$gcc hello.c
$./a.out
總結(jié)
以上是生活随笔為你收集整理的linux gcc编译c文件头文件,使用GCC编译器编译C语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux查看占用的命令,linux内存
- 下一篇: linux下kvm设备配置,Linux下