gcc -c? filename.c ? ? #生成.o為后綴的目標文件,通常用于編譯不包含主程序的子程序文件。
gcc sourcefile.c ?-o output_filename ? ?#生成可執行文件output_filename。如果不給出這個選項,gcc就給出預設的可執行文件a.out。
gcc -g sourcefile.c -o test ?#產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,就必須加入這個選項。
gcc?-E?test.c?-o?test.i
gcc的-E選項,可以讓編譯器在預處理后停止,并輸出預處理結果。在本例中,預處理結果就是將stdio.h 文件中的內容插入到test.c中了。
預處理之后,可直接對生成的test.i文件編譯,生成匯編代碼:
gcc -S test.i -o test.s
gcc的-S選項,表示在程序編譯期間,在生成匯編代碼后,停止,-o輸出匯編代碼文件。
對于上一小節中生成的匯編代碼文件test.s,gas匯編器負責將其編譯為目標文件,如下:
gcc -c test.s -o test.o
gcc連接器是gas提供的,負責將程序的目標文件與所需的所有附加的目標文件連接起來,最終生成可執行文件。附加的目標文件包括靜態連接庫和動態連接庫。
對于上一小節中生成的test.o,將其與C標準輸入輸出庫進行連接,最終生成程序test
gcc test.o -o test
在命令行窗口中,執行./test, HelloWorld就出來了!