GCC 編譯器在編譯一個C語言程序時須要通過如下 4 步:html
.i
文件。.s
文件。.o
文件。.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