GCC編譯流程及經常使用編輯命令

GCC 編譯器在編譯一個C語言程序時須要通過如下 4 步:html

  1. 將C語言源程序預處理,生成.i文件。
  2. 預處理後的.i文件編譯成爲彙編語言,生成.s文件。
  3. 將彙編語言文件通過彙編,生成目標文件.o文件。
  4. 將各個模塊的.o文件連接起來生成一個可執行程序文件。


GCC 編譯流程以下圖所示:linux

 

 

.i文件、.s文件、.o文件能夠認爲是中間文件或臨時文件,若是使用 GCC 一次性完成C語言程序的編譯,那麼只能看到最終的可執行文件,這些中間文件都是看不到的,由於 GCC 已經經它們刪除了。

固然,可使用 GCC 選項看到這些中間文件,下節咱們會講解 GCC 選項。學習

 

 linux下使用gcc命令編譯代碼優化

gcc命令提供了很是多的命令選項,但並非全部都要熟悉.初學時掌握幾個經常使用的就能夠了,到後面再慢慢學習其餘命令選項..net

 

一,經常使用編譯命令選項命令行

假設源程序文件名爲test.ccode

1.無選項編譯連接htm

用法: #gcc test.cblog

做用: 將test.c預處理 彙編 編譯 並連接造成可執行文件。這裏未指定輸出文件,默認輸出爲a.out 編譯成功後能夠看到生成了一個a.out的文件.在命令行輸入./aout 執行程序 。 ./表示在當前目錄, a.out爲可執行程序文件名get

2.選項 -o

用法: #gcc test.c -o test

做用: 將test.c預處理 彙編 編譯並連接造成可執行文件test 。 -o選項用來指定輸出文件的文件名。輸入./test執行程序

3.選項 -E

 用法: #gcc -E test.c -o test.i

做用: 將test.c 預處理輸出test.i 文件

4.選項 -S

用法: #gcc -S test.i

做用: 將彙編輸出文件test.i 彙編成 test.s 文件

5.選項 -c

用法: #gcc -c test.s 編譯輸出 test.o 文件

6.選項 -0

用法: #gcc -01 test.c -o test

做用: 使用編譯優化級別1編譯程序。級別爲1~3,級別越大優化效果越好,單編譯時間越長,輸出./test執行程序

 

二 多源文件的編譯方法

若是有多個源文件,基本上有兩種編譯方法:

[假設有兩個源文件爲test.c 和 testfun.c]

1.多個文件一塊兒編譯

用法: #gcc testfunc.c test.c -o test

做用: 將testfun.c 和test.c 分別編譯後 連接成 test可執行文件.

2.分別編譯各個源文件,以後對編譯後輸出的目標文件連接

用法: #gcc -c testfunc.c //將testfun.c 編譯成testfun.o

  #gcc -c test.c //將test.c 編譯成 test.o

  #gcc -o testfunc.o test.o -o test //將testfun.o和test.o 連接成 test

以上兩種方法比較,第一種方法編譯是須要全部文件從新編譯,而第二種方法能夠只從新編譯修改的文件,未修改的文件不用從新編譯.

 

 

轉: http://c.biancheng.net/view/663.html

https://wenku.baidu.com/view/7ae93b68a45177232f60a2c6.html

相關文章
相關標籤/搜索