天天看點

linux之c/c++編譯器gcc/g++的用法以及介紹

gcc/g++是linux下常用的c/c++編譯器,目的就是把test.c檔案轉換成可運作的檔案。

用法:

gcc  [可選項]  要編譯的檔案  [可選項]  [目标檔案]

比如:(-E和-o就是可選項)

gcc -E test.c -o test.i
           

------------------------------------------------------------------------------------------------------------

比如我們用vim寫好了一個test.c檔案

我們可以這樣編譯他:(這是簡化的寫法,複雜的4部在下面)

gcc test.c -o test
           

然後運作他:

./test
           

就可以顯示運作的結果。

可選項的作用有很多,-o的意思是把左邊檔案輸出到右邊檔案

其實gcc test.c -o test這句話有4個步驟:

我們知道c程式編譯有4個步驟:預處理——編譯——彙編——連接配接

  1. 預處理:進行宏替換
    • 主要是處理:宏、檔案包含、條件編譯、去除注釋等等。
    • 預處理指令是以#開頭的代碼行
    • 如:gcc -E test.c -o test.i
    • -E:讓gcc在預處理結束後停止編譯
    • -o是目标檔案,“.i”是經過預處理的c源檔案
  2. 編譯:生成彙編
    • 主要檢查錯誤
    • 隻進行編譯而不生成彙編代碼
    • 如:gcc -S test.i -o test.s
  3. 彙編:生成機器可識别代碼
    • 可以用-c看到彙編代碼已轉化為“.o”的二進制目标代碼
    • 如:gcc -c test.s -o test.o
  4. 連接配接:生成可執行檔案或者庫檔案
    • 如:gcc test.o -o test
    • 之後就可以“./test”運作了

下面是全部可選項的介紹:

-E:隻激活預處理,這個不生成檔案,你需要把它重定向到一個輸出檔案裡

-S:編譯到彙編語言,不進行彙編和連接配接

-c:編譯到目标代碼

-o:輸出到檔案

-static:對生成的檔案采用靜态連接配接

-g:生成調試資訊,GUN調試器可以用這個資訊

-share:盡量使用動态庫,使用生成檔案比較小,但需要系統有動态庫

-O0,O1,O2,O3(第一個是大寫字母o,第二個是數字0123):編譯器的4個優化選項級别,O0沒有優化,O1預設值,O3優化級别最高。

-w:不生成任何警告資訊

-Wall:生成所有警告資訊

繼續閱讀