gcc介紹目錄
一、gcc簡介
1、gcc的特點
gcc(gnu c compiler)是gnu推出的功能強大、效能優越的多平台編譯器,是gnu的代表作之一。gcc可以在多種硬體平台上編譯出可執行程式,其執行效率與一般的編譯器相比平均效率要高20%~30%。
2、gcc基本用法
gcc最基本的用法是∶
gcc [options] filenames
options:編譯器所需要的編譯選項
filenames: 要編譯的檔名
新建乙個hello.c檔案,檔案內容如下
/*hello.c*/
#include
void main()
儲存後執行gcc hello.c,會生成乙個a.out 目錄,執行a.out檔案
./a.out,會列印出hello world
二、gcc深入使用
1,gcc編譯流程
gcc編譯器能將c/c++語言源程式、匯程式設計序形成
可執行檔案。整個形成過程可以被細分為四個階段:
經過預處理,編譯,彙編,鏈結四個階段
a,預處理
gcc -e hello.c -o(輸出) hello.i
輸出hello.i
開啟hello.i,把預處理stdio.h所用到的標頭檔案補全了。
b,編譯成彙編檔案
gcc - s hello.i -o hello.s
vim hello.s
可以看到hello.s是彙編檔案
c,變成二進位制檔案
gcc -c hello.s -o hello.o
d,鏈結
gcc hello.o -o hello
最後得到hello這個可以執行的應用程式,可以執行./hello
列印出hello world
總結
gcc通過字尾來區別輸入檔案的類別,常見型別有
v .c為字尾的檔案: c語言源**檔案
v .a為字尾的檔案: 是由目標檔案構成的庫檔案
v .c,.cc或.cxx 為字尾的檔案: 是c++源**檔案
v .h為字尾的檔案: 標頭檔案
v .o為字尾的檔案: 是編譯後的目標檔案
v .s為字尾的檔案: 是組合語言源**檔案
2,gcc編譯選項
掌握gcc的使用方法,最重要的是掌握gcc的編譯選項,gcc編譯器的編譯選項大約有100多個,其中多數我們根本就用不到,這裡只介紹其中最基本、最常用的引數。-o output_filename:確定可執行檔案的名稱為output_filename。如果不給出這個選項,gcc就給出缺省的可執行檔案a.out。
-o用法:
如gcc hello.c 直接生成預設的a.out
gcc hello.c -o ***
那麼就會生成***的可執行檔案,不再生成a.out預設可執行檔案
#include
int main(void)
printf(result is %lf\\n, result);
return
0;}
從**中看到,temp被賦值但是沒有用到,所以可以被優化掉,節省了時間和提高效率。我們可以從**執行的時間來看
如把上面的程式儲存在hello1.c裡面
gcc hello1.c -o hello
time ./hello
可以看到列印的real時間為2.5s
如果用-o優化
gcc -o hello1.c -o hello
time ./hello
可以看到列印real的時間為0.6s
-o2:比-o更好的優化編譯、連線,當然整個編譯、連線過程會更慢。
-c:不鏈結,編譯器只是由輸入的.c等源**檔案編譯生成的.o為字尾的中間檔案
即生成hello.o 檔案不生成hello的執行檔案
gcc -c hello.c
-g:產生除錯工具(gnu的gdb)所需要的符號資訊,要想對編譯出的程式進行除錯,就必須加入這個選項。
gcc -g hello.c -o hello 可以用ll檢視hello比不加-g的hello的可執行程式要大
-i dirname: 將dirname所指出的目錄作為編譯器尋找標頭檔案的標準路徑。
c程式中的標頭檔案包含兩種情況∶
#include
gcc 引數 gcc編譯工具簡介
編譯的過程是乙個語言轉換的過程,由人能看懂的程式語言轉換為機器能看懂的二進位制語言。yaos的開發過程中,我們選擇gcc作為這個轉換器。我使用的系統是macos ak 2 yaos akilis uname adarwin ak 2.local 19.3.0 darwin kernel versio...
GCC基本用法
初學時最好從命令列入手,這樣可以熟悉從編寫程式 編譯 除錯和執行的整個過程。編寫程式可以用vi或其它編輯器編寫。編譯則使用gcc命令。要往下學習首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多...
gcc基本用法
gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多而打擊了學習的信心。一.常用編譯命令選項 假設源程式檔名為test.c。1.無選項編譯鏈結 用法 gcc test.c 2.選項 o 用法 gcc test.c o test...