5.19.2010

如何使用gcc??

簡介:
GCC是由GNU出的C語言編譯器 (Compiler),可將由ANSI C或Traditional C語言寫成的程式碼編譯成可執行檔 (Executable File)。由於GCC能分別編譯出可執行於許多不同硬體、作業系統下的程式,在UNIX like system上是相當多人常用的C語言編譯程式。

使用方法簡介:

基本的使用方法及常用指令:

前言:
編譯器在編譯過程中,先將程式碼編譯成object檔,然後再和程式庫聯結,成為可執行檔。故一個編譯器須提供的參數主要有幾類:
1. 指定編譯器編出的object檔或是可執行檔檔名。
2. 在編譯過程做最佳化,可提升程式的執行速度。
3. 設定搜尋程式庫的標頭檔 (Header File)及程式庫檔的目錄及指定程式庫檔檔名。
4. 提供進一步的資訊以便使用者找尋程式中的錯誤。

以下便以這四個大類分別介紹。
注意:下面在不同類別中所介紹的參數,幾乎都可以混合著使用。

1. 設定編譯出的object檔檔名或是可執行檔檔名:
參數:-o (被輸出的檔名)
說明:指定編譯出的檔名。
範例:本例將程式碼Main.c編譯成可執行檔,並設定檔名為Main。

gcc Main.c -o Main

2. 在編譯過程做最佳化
參數:-O
說明:在編譯過程做最佳化,以提升增快程式執行速度。
範例:本例將程式碼Main.c編譯成可執行檔Main,並在編譯過程做最佳化。

gcc -O Main.c -o Main

3. 設定搜尋標頭檔目錄 (Include File)、程式庫檔 (Library File)的目錄及指定程式庫檔。
設定搜尋標頭檔目錄
參數:-I(Include_File_Name)
說明:將目錄Include_File_Name設定為搜尋標頭檔目錄之一。

設定搜尋程式庫目錄。
參數:-L(Library_File_Name)
說明:將目錄Library_File_Name設定為搜尋程式庫目錄之一。

設定程式庫檔案。
參數:-llibdps.a
說明:聯結程式庫libdps.a。

EX1:本例中假設你的程式檔名為Main.c,所要聯結的程式庫為libdps.a;在編譯的過程中讓它做最佳化。

gcc -O -I/usr/X11R6/incclude/ -L/usr/X11R6/lib/ -l/usr/X11R6/lib/libdps.a ./Main.c -o ./Main

EX2:本例中假設你的程式檔名為Main2.c,使用到X window函數,所需的include 檔放在/usr/X11R6/include/中,所須聯結的程式庫放在/usr/X11R6/lib,所要聯結的程式庫為libX11.a。同樣地在編譯的過程中做最佳化。

gcc -O -I/usr/X11R6/include/ -L/usr/X11R6/lib/ -l/usr/X11R6/lib/libX11.a ./Main2.c -o ./Main2

4. 提供進一步的資訊以便使用者找尋程式中的錯誤。
參數:-Wall
說明:Wall -- Warning all輸出較多的警告訊息,以便找出程式的錯誤。
範例:編譯Main.c時輸出較多的警告訊息。

gcc -Wall ./Main.c -o ./Main

參數:-g
說明:在編譯出可執行檔時,附加執行時除錯 (debug)資訊,以供gdb讀取(若要使用ABSoft的除錯程式,則須將參數改為-gdwarf )。
範例:將Main.c編譯成可執行檔Main,並附加除錯資訊。

gcc -g ./Main.c -o ./Main

進階參數
1. 僅編譯成object檔。
參數:-c
說明:僅編譯成object檔而不進行程式庫聯結。
範例:將Main.c編譯成object檔Main.o。

gcc -c ./Main.c -o ./Main.o

2. 聯結數個object成可執行檔。
範例:將FunC1.o、FunC2.o和程式庫聯結後成為可執行檔Main。

gcc FunC1.o FunC2.o -o ./Main

3. 觀察巨集展開情形:
參數:-E
說明:展開程式中的巨集以便了解巨集是否依照預期方式展開。
範例:將Main.c中的巨集展開後儲存到LOG.TXT。

gcc -E ./Main.c 1> ./LOG.TXT

4. 產生組合語言程式碼:
參數:-S
範例:編譯Main.c產生對應的組合語言程式碼檔Main.s。

gcc -S ./Main.c -o ./Main.s

如果需要更多的說明:
man gcc
info gcc

假如在Linux下看英文版的gcc Manual覺得很困難的話,在這裡推薦一本書:

書名:GCC完全指南
作者:Kurt Wall, William von Hagen
譯者:鄧瑋敦
出版社:博碩文化
ISBN:957-527-808-9

沒有留言:

張貼留言