gcc

1.gcc  編譯時,實際分爲四個階段

  預處理(pre-processing)

   預處理階段通常處理文件中#ifdef #include #define命令,該階段會生成一個*.i文件,但實際工做中通常不用專門生成這個文件,若必定要生成這個文件,能夠使用以下命令函數

    #gcc -E test.c -o test.i調試

  編譯(compiling)

   該階段輸入中間過程*.i文件,生成彙編語言文件*.s,能夠使用以下命令code

      #gcc -S test.i -o test.s開發

  彙編(assembling)

    此階段,輸入.s文件,生成二進制機器碼文件.o,對應命令原型

    # gcc -c test.s -o test.o編譯器

  連接(Linking)

    此階段輸入.s文件與其餘庫文件聚集成一個二進制代碼文件,對應命令源碼

    #gcc test.o  -o testio

 2.經常使用選項

  -c: 只編譯成二進制文件,不連接,一般編譯沒有main函數的c文件編譯

  -o:輸出文件名test

  -g:產生gdb所需的符號信息,要對源碼進行調試,就必須在編譯的時候加入此參數

  -Idirname:將名爲dirname的目錄加入到程序頭文件目錄列表中,他是在預處理階段使用的選項,I指Include。

 在C程序中,頭文件被大量使用,通常而言,C程序一般有頭文件和定義文件組成,頭文件是包含函數原型聲明/常量定義的文件,用於保存程序的聲明,而定義文件用於保存程序的實現。

3.頭文件包含方式

  #include <stdio.h>

   #include "mycode.h"

對於第一種,gcc在系統預設的路徑查找頭文件(如/usr/include),一般用於系統文件,第二種,會首先查找當前文件夾中查找頭文件,若是沒有找到,再去制定的dirname中查找。

在實際開發中,對本身編寫的頭文件,通常放到一個執行目錄下,編譯的時候指明這個目錄就能夠了,不然編譯器會由於找不到頭文件目錄而失敗

-Ldirname:將dirname目錄加入到程序的庫文件搜索目錄中,他是在連接過程當中使用的參數,L指Link。

相關文章
相關標籤/搜索