引用:http://developer.51cto.com/art/200609/32317_1.htm優化
對於GUN編譯器來講,程序的編譯要經歷預處理、編譯、彙編、鏈接四個階段spa
假設源程序文件名爲test.c。命令行
一.基本命令htm
1. 無選項編譯連接
用法:gcc test.c
做用:將test.c預處理、彙編、編譯並連接造成可執行文件。未指定輸出文件則默認輸出 a.out。編譯器
2. 選項 -o
用法:gcc test.c -o test
做用:將test.c預處理、彙編、編譯並連接造成可執行文件test。-o選項用來指定輸出文件的文件名。編譯
3. 選項 -E
用法:gcc -E test.c -o test.i
做用:將test.c預處理輸出test.i文件。test
4. 選項 -S
用法:gcc -S test.i
做用:將預處理輸出文件test.i彙編成test.s文件。gcc
5. 選項 -c
用法:gcc -c test.s
做用:將彙編輸出文件test.s編譯輸出test.o文件。引用
6. 無選項連接
用法:gcc test.o -o test
做用:將編譯輸出文件test.o連接成最終可執行文件test。gc
7. 選項-O
用法:gcc -O1 test.c -o test
做用:使用編譯優化級別1編譯程序。級別爲1~3,級別越大優化效果越好,但編譯時間越長。
二. 多源文件的編譯方法
若是有多個源文件,基本上有兩種編譯方法:
[假設有兩個源文件爲test.c和testfun.c]
1. 多個文件一塊兒編譯
用法:gcc testfun.c test.c -o test
做用:將testfun.c和test.c分別編譯後連接成test可執行文件。
2. 分別編譯各個源文件,以後對編譯後輸出的目標文件連接。
用法:
gcc -c testfun.c //將testfun.c編譯成testfun.o
gcc -c test.c //將test.c編譯成test.o
gcc testfun.o test.o -o test //將testfun.o和test.o連接成test
以上兩種方法相比較,第一中方法編譯時須要全部文件從新編譯,而第二種方法能夠只從新編譯修改的文件,未修改的文件不用從新編譯。
三. 多文件夾的編譯方法。
例如,存放源文件的子目錄名爲./src,而頭文件的子目錄爲 ./inc。方法以下所示:
gcc test.c –I../inc -o test
多個目錄狀況下,可使用多個-I 來指定各個目錄:
gcc test.c –I../inc –I../../inc2 -o test // 另外一個子目錄inc2,須要上跳2級目錄
四.編譯時,進行宏定義:
在編譯命令行中定義符號常量,使用-D選項便可,以下例所示:
gcc -D TEST_CONFIGURATION test.c -o test
上面的命令與在源文件中加入下列命令是等效的:
#define TEST_CONFIGURATION
五.常常處理:
引用文章有詳細解釋,此處不在列出。
添加警告的方式: gcc -Wall test.c -o test