gcc -c? filename.c ? ? #生成.o為后綴的目標(biāo)文件怎诫,通常用于編譯不包含主程序的子程序文件抗愁。
gcc sourcefile.c ?-o output_filename ? ?#生成可執(zhí)行文件output_filename掏秩。如果不給出這個選項(xiàng)拒担,gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out淹办。
gcc -g sourcefile.c -o test ?#產(chǎn)生符號調(diào)試工具(GNU的gdb)所必要的符號資訊追驴,要想對源代碼進(jìn)行調(diào)試械哟,就必須加入這個選項(xiàng)。
gcc?-E?test.c?-o?test.i
gcc的-E選項(xiàng)殿雪,可以讓編譯器在預(yù)處理后停止暇咆,并輸出預(yù)處理結(jié)果。在本例中,預(yù)處理結(jié)果就是將stdio.h 文件中的內(nèi)容插入到test.c中了糯崎。
預(yù)處理之后几缭,可直接對生成的test.i文件編譯,生成匯編代碼:
gcc -S test.i -o test.s
gcc的-S選項(xiàng)沃呢,表示在程序編譯期間年栓,在生成匯編代碼后,停止薄霜,-o輸出匯編代碼文件某抓。
對于上一小節(jié)中生成的匯編代碼文件test.s,gas匯編器負(fù)責(zé)將其編譯為目標(biāo)文件惰瓜,如下:
gcc -c test.s -o test.o
gcc連接器是gas提供的否副,負(fù)責(zé)將程序的目標(biāo)文件與所需的所有附加的目標(biāo)文件連接起來,最終生成可執(zhí)行文件崎坊。附加的目標(biāo)文件包括靜態(tài)連接庫和動態(tài)連接庫备禀。
對于上一小節(jié)中生成的test.o,將其與C標(biāo)準(zhǔn)輸入輸出庫進(jìn)行連接奈揍,最終生成程序test
gcc test.o -o test
在命令行窗口中曲尸,執(zhí)行./test, HelloWorld就出來了!