gcc經常使用命令集

引用: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

相關文章
相關標籤/搜索