c語言的編譯過程和GCC 編譯參數

原文: http://www.cnblogs.com/zhangShanGui/p/4912135.htmlhtml

C語言的編譯過程和GCC編譯參數

C語言的編譯通常有三個步驟:函數

  1. 預編譯:

gcc -E -o a.e a.cpost

預編譯a.c文件,生成的目標文件名爲a.eui

預編譯就是將include包含的頭文件內容替換到C文件中,同時刪除代碼中沒用的註釋url

示例:spa

//main.c翻譯

#include <stdio.h>htm

#include "sum.h"blog

int main(){ci

  int m = 6;

  int n = 5;

  int result = sum(m,n);  printf("hello\n%\n",result);

//sum.h

int sum(int x,int y);

運行以後結果爲:

第一步就是這樣的啦!

2 . 編譯

gcc -S -o a.s a.e

將a.e翻譯成一個ASCII彙編語言文件a.s.

3 .連接

gcc -o a a.s

這行命令告訴gcc對源程序a.o進行連接,生成可執行程序a

gcc 沒有任何參數,表示就是連接

GCC編譯器的基本選項以下表:

類型 說明
-E 預處理後即中止,不進行編譯、彙編及鏈接
-S 編譯後即中止,不進行彙編及鏈接
-c 編譯或彙編源文件,但不進行鏈接
-o file 指定輸出文件file

C語言的include頭文件

  1.  include是要告訴編譯器,包含頭文件
  2. 在C語言中,任何的庫函數調用都須要包含頭文件
  3. 頭文件也至關於一個文檔聲明
  4. 若是把main函數放在第一個文件中,而把自定義函數放在第二個文件中,那麼就須要在第一個文件中聲明函數原型
  5. 若是把函數原型包含在一個頭文件中,那麼就不用每次使用函數的時候都聲明其原型了,把函數聲明放進頭文件中是個好習慣!
  6. 頭文件能夠不須要編譯
  7. 能夠查看具體的聲明
  8. 頭文件加上實現文件的o文件提交給使用者便可,不須要知道源代碼
  9. o文件預先編譯,因此整個項目編譯時,會大大提升編譯的時間 。
  10. 當一個文件(A.c文件)依賴於頭文件(b.h)時,若是b.c編譯以後造成的b.o文件從新編譯後,a.o的文件不須要從新編譯
  11. 能夠極大下降手工複製,粘貼的錯誤概率

頭文件的注意事項:

  1. <頭文件>,表示讓C語言編譯器在系統目錄(即gcc編譯器的include目錄下)下尋找相關的頭文件
  2. 「頭文件」,表示讓C語言編譯器在用戶當前目錄下尋找相關的頭文件
  3. 若是是使用了C語言庫函數的須要的頭文件,那麼必定是#include<>
  4. 若是是使用了用戶自定義的頭文件,那麼必定是#include「」
相關文章
相關標籤/搜索