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個步驟:預處理——編譯——彙編——連接配接
- 預處理:進行宏替換
- 主要是處理:宏、檔案包含、條件編譯、去除注釋等等。
- 預處理指令是以#開頭的代碼行
- 如:gcc -E test.c -o test.i
- -E:讓gcc在預處理結束後停止編譯
- -o是目标檔案,“.i”是經過預處理的c源檔案
- 編譯:生成彙編
- 主要檢查錯誤
- 隻進行編譯而不生成彙編代碼
- 如:gcc -S test.i -o test.s
- 彙編:生成機器可識别代碼
- 可以用-c看到彙編代碼已轉化為“.o”的二進制目标代碼
- 如:gcc -c test.s -o test.o
- 連接配接:生成可執行檔案或者庫檔案
- 如: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:生成所有警告資訊