C語言編譯步驟

C語言從代碼變成可執行程序的步驟:

預處理 -----> 編譯 -----> 彙編 -----> 鏈接

⒈預處理:去掉註釋,加載頭文件,代替宏定義,條件編譯

需要文件:.c文件

生成產物:預處理文件(以.i結尾)

使用方法:gcc hello.c -E -o hello.i

可以使用vim打開預處理文件來查看生成產物

⒉編譯:使用編譯器進行C語言的語法檢查,如果有語法錯誤,報錯,並結束編譯過程;如果沒有語法錯誤,把C的源程序轉變爲彙編代碼;

需要文件:.i文件

生成產物:彙編文件(以.s結尾)

使用方法:gcc hello.i -S -o hello.s

可以使用vim打開彙編文件來查看生成產物

⒊彙編:把彙編源文件通過彙編器生成目標文件(二進制機器語言)

需要文件:.s文件

生成產物:機器碼(或稱爲“目標代碼”,以.o結尾)

使用方法:gcc hello.s -c -o hello.o

可以使用vim打開目標代碼文件來查看生成產物(不過只會看到亂碼)

⒋鏈接:把目標文件執行所依賴的所有二進制的其他目標文件及C的庫文件都整合成一個可執行文件的過程;

需要文件:.o文件及各種動態庫或靜態庫

生成產物:可執行程序

使用方法:gcc hello.o -o hello

-o:指定生成的產物的名字

-Wall:讓編譯器報告全部錯誤

我們要養成良好習慣,在編譯過程中添加-o指定生成產物名稱,添加-Wall報告所有的errorwarning方便我們調試程序。完整的編譯指令如下:

gcc hello.c -o hello -Wall

 

編譯完成後(無error,無warning),會生成-o之後的文件(如沒有加-o則會生成a.out文件)

執行文件:

./hello./a.out

1#define 在預處理階段

   typedef 在編譯階段

2、和shell編程一樣

C語言的main(int argc, const char *argv[])中兩個參數分別代表命令行參數個數,和存放參數的指針常量數組


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章