查看完整版本: GCC 使用簡介


girl 2009-4-14 11:56

GCC 使用簡介

GCC 使用簡介<BR>由 ycheng 所建立。 最後修改時間為 2002-11-20 16:55:43。 <BR><BR>作者:鄭原真<BR>授權:FDL (Free Document License)<BR><BR>GCC 的使用<BR>簡介:<BR>GCC 是由 GNU 出的 C 語言編譯器,可將由 ANSI C 或 traditional C 語言寫成的程式碼編譯成可執行檔。由於 GCC 能分別編譯出可執行於許多不同硬體、作業系統下的程式,在 UNIX 系統上是相當多人常用的 C 語言編譯程式。 <BR>使用方法簡介<BR><BR>基本的使用方法及常用指令<BR>前言<BR>編譯器在編譯過程中,先將程式碼編譯成 object 檔,然後再和程式庫聯結,成為可執行檔。故一個編譯器須提供的參數主要有幾類: <BR>指定編譯器編出的 object 檔或是可執行檔檔名。 <BR>在編譯過程做最佳化,可提升程式的執行速度。 <BR>設定搜尋程式庫的標頭檔 (header file) 及程式庫檔的目錄及指定程式庫檔檔名。 <BR>提供進一步的資訊以便使用者找尋程式中的錯誤。 <BR>以下便以這四個大類分別介紹。 <BR>注意:下面在不同類別中所介紹的參數,幾乎都可以混合著使用。 <BR><BR>設定編譯出的 object 檔檔名或是可執行檔檔名: <BR>參數: -o out_put_filename <BR>說明: 指定編譯出的檔名為 out_put_filename。 <BR><BR>範例: 本例將程式碼 'test.c' 編譯成可執行檔,並設定檔名為 'test'。 <BR>gcc test.c -o test <BR><BR>在編譯過程做最佳化 <BR>參數: -O <BR>說明: 在編譯過程做最佳化,以提升增快程式執行速度。 <BR><BR>範例:本例將程式碼 'test.c' 編譯成可執行檔 'test',並在編譯過程做最佳化'。 <BR>gcc -O test.c -o test <BR><BR>設定搜尋標頭檔目錄、程式庫檔的目錄及指定程式庫檔。 <BR><BR>設定搜尋標頭檔目錄 <BR>參數: -Idir_name <BR>說明: 將目錄 'dir_name' 設定為搜尋標頭檔目錄之一。 <BR><BR>設定搜尋程式庫目錄。 <BR>參數: -Ldir_name <BR>說明: 將目錄 'dir_name' 設定為搜尋程式庫目錄之一。 <BR><BR>設定程式庫檔案。 <BR><BR>參數: -lname <BR>說明: 聯結程式庫 libname.a 。 <BR><BR>範例一:本例中假設你的程式檔名為test.c,數學函數如 sin等,所要聯結的程式庫為 libm.a。 <BR><BR>gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test <BR><BR>範例二:本例中假設你的程式檔名為 test.c,使用到 X window 函數,所需的 include 檔放在 /usr/X11R6/include 中,所須聯結的程式庫放在 /usr/X11R6/lib,所要聯結的程式庫為 libX11.a。 <BR>gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test <BR><BR>提供進一步的資訊以便使用者找尋程式中的錯誤。 <BR>參數: -Wall <BR>說明: 輸出較多的警告訊息,以便找出程式的錯誤。 <BR>範例: 編譯 test.c 時輸出較多的警告訊息。 <BR>gcc -Wall test.c <BR><BR>參數: -g <BR>說明: 在編譯出可執行檔時,附加執行時除錯資訊,以供 gdb 讀取 (若要使用 ABSoft 的除錯程式,則須將參數改為 -gdwarf )。 <BR>範例: 將 'test.c' 編譯成可執行檔 'test',並附加除錯資訊。 <BR>gcc -g test.c -o test <BR><BR>進階參數<BR>1. 僅編譯成 object 檔。 <BR>參數: -c <BR>說明: 僅編譯成 object 檔而不進行程式庫聯結。 <BR>範例: 將 test.c 編譯成 object 檔 test.o。 <BR>gcc -c test.c -o test.o <BR><BR>2. 聯結數個 object 成可執行檔。 <BR>範例: 將 'test1.o'、'test2.o' 和程式庫聯結後成為可執行檔 test。 <BR>gcc test1.o test2.o -o test <BR><BR>3. 觀察巨集展開情形: <BR>參數: -E <BR>說明:展開程式中的巨集以便了解巨集是否依照預期方式展開。 <BR><BR>範例:將 test1.c 中的巨集展開後儲存到 test1.c.ext 。 <BR>gcc -E test1.c &gt; test1.c.ext <BR><BR>4. 產生組合語言程式碼: <BR><BR>參數: -S <BR><BR>範例:編譯 test.c 產生對應的組合語言程式碼檔 test.s。 <BR>gcc -S test.c -o test.s <BR><BR>編譯參數列表 -o out_put_filename 將編譯後產生的檔名設為 out_put_filename <BR>-O 編譯時做最佳化,以增加程式執行效率。 <BR>-c 將原始語言編譯成 .o 檔(object檔) 不做程式庫連結的工作。 <BR>-g 編譯出 .o 檔時,保留除錯的資訊,在連結後產生的可執行檔中包含 gdb 需要的資訊。(若要給 ABSoft 的除錯程式使用,須將此參數改為 -gdwarg ) <BR>-E 將原始語言編譯將 test.c 中的巨集展開,之後輸出到 stdout。 <BR>-L/usr/X11R6/lib 連結程式時,搜尋程式庫檔時,將 /usr/X11R6/lib 列入搜尋目錄。 <BR>-lm 在連結程式時,將 libm.a 列入搜尋檔案中。 <BR>-I/usr/X11R6/include 到 /usr/X11R6/include 找尋被 include 的檔案。 <BR>-S 產生 test.c 對應的組合語言程式檔 test.s 。 <BR>-Wall 產生比較多的警告訊息 (平常不須使用,但當找不到程式中的錯誤時,可以加以使用。) <BR><BR>快速入門 <BR><BR>範例:將 test.c 編譯成可執行檔 test 並在編譯過程中做最佳化。 <BR>gcc -O test.c -o test <BR><BR>範例: 將 test1.c 和 test2.c 編譯聯結成可執行檔 test 並在編譯過程中做最佳化。 <BR>gcc -O test1.c test2.c -o test <BR><BR><BR>範例:若程式中有使用數學函數如 sin 等,編譯時須加入 -lm 。 <BR>gcc -O test.c -o test -lm <BR><BR>範例:發現程式有執行時錯誤,編譯後需用 GDB 除錯。 <BR>gcc -O -g test.c -o test <BR><BR>範例:發現程式有執行時錯誤,編譯後要跟 ABSoft F77 聯結後以 ABSoft 的除錯程式除錯。 <BR>gcc -O -gdwarf test.c -o test <BR><BR>更多的說明<BR>man gcc <BR>info gcc

ivan5917 2009-5-25 09:47

這些用在LINUX裡很方便  感謝提供
頁: [1]
查看完整版本: GCC 使用簡介