GCC使用基本方法彙總

jiangzhengdong發表於2013-02-24

          雖然用linux斷斷續續也差不多三年了,但是卻很少在其下編寫c程式,現在也處於學習gcc的處級階段,現將所學寫成部落格供大家參考學習,同時也歡迎高人指點,如有不對,懇請指出。

          初學gcc,最好還是從命令列開始,這樣可知程式的執行步驟,方便以後更深層次的學習。通常程式的執行都會經過編寫、預處理、編譯、彙編、連結這幾個步驟,下面便就這幾個步驟來一一說明。

以下例項都以test.c舉例說明

1.無選項的編譯連結

#gcc test.c

說明:將test.c預處理、編譯、彙編、連結生成可執行檔案,預設生成為a.out可執行檔案。


2.指定可執行檔名稱

#gcc test.c -o test

說明:使用-o引數指定最後生成的可執行檔名稱。


3.選項-E

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

說明:使用-E參數列明gcc只進行預處理便結束,不再接著進行編譯等後續過程了。


4.選項-S

#gcc -S test.i

說明:使用-S參數列明gcc編譯後便結束,不再進行彙編等後續過程。通常都是用.s檔案替代原來的.c和.i檔案


5.選項-c

#gcc -c test.s

說明:使用-c參數列明gcc編譯或彙編後便結束,不再進行連結過程。通常都是用.o檔案替代..c,.i和.s檔案


6.-選項-o

#gcc test.o -o test

說明:使用-o參數列明gcc將會進行連結並生成最後的可執行檔案。


7選項-O

#gcc -O1 test.c -o test

說明:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長


8.選項-v

#gcc -v test.c -o test

說明:使用-v顯示編譯時的詳細資訊,編譯器的版本,編譯過程等。


多個原始檔一起編譯的方法

有兩種編譯方法:
假設有兩個原始檔分別為test1c和test2.c

1. 從編譯階段便一起
用法:#gcc test1.c test2.c -o test
作用:將testfun.c和test.c分別編譯後連結成test可執行檔案。

2. 先單獨編譯各個原始檔,然後對編譯後生成的目標檔案進行連結。
用法:
#gcc -c test1.c //將test1.c編譯成test1.o
#gcc -c test2.c   //將test.c編譯成test2.o
#gcc -o test1.o test2.o -o test //將test1.o和test2.o連結成test

以上兩種方法相比較,第一種方法編譯時需要所有檔案重新編譯,而第二種方法可以只重新編譯修改的檔案,未修改的檔案不用重新編譯。



相關文章