Changes between Version 7 and Version 8 of wade/gcc


Ignore:
Timestamp:
Jan 7, 2009, 3:26:12 PM (15 years ago)
Author:
wade
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • wade/gcc

    v7 v8  
    66}}}
    77
     8= 基本用法 =
     9設定編譯出的 object 檔檔名或是可執行檔檔名:
     10參數: -o out_put_filename
     11說明: 指定編譯出的檔名為 out_put_filename。
     12
     13範例: 本例將程式碼 'test.c' 編譯成可執行檔,並設定檔名為 'test'。
     14
     15gcc test.c -o test
     16
     17在編譯過程做最佳化
     18參數: -O
     19說明: 在編譯過程做最佳化,以提升增快程式執行速度。
     20
     21範例:本例將程式碼 'test.c' 編譯成可執行檔 'test',並在編譯過程做最佳化'。
     22
     23gcc -O test.c -o test
     24
     25設定搜尋標頭檔目錄、程式庫檔的目錄及指定程式庫檔。
     26
     27設定搜尋標頭檔目錄
     28參數: -Idir_name
     29說明: 將目錄 'dir_name' 設定為搜尋標頭檔目錄之一。
     30
     31
     32設定搜尋程式庫目錄。
     33參數: -Ldir_name
     34說明: 將目錄 'dir_name' 設定為搜尋程式庫目錄之一。
     35
     36
     37設定程式庫檔案。
     38
     39參數: -lname
     40說明: 聯結程式庫 libname.a 。
     41
     42範例一:本例中假設你的程式檔名為test.c,數學函數如 sin等,所要聯結的程式庫為 libm.a。
     43
     44gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
     45
     46範例二:本例中假設你的程式檔名為 test.c,使用到 X window 函數,所需的 include 檔放在 /usr/X11R6/include 中,所須聯結的程式庫放在 /usr/X11R6/lib,所要聯結的程式庫為 libX11.a。
     47gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
     48
     49提供進一步的資訊以便使用者找尋程式中的錯誤。
     50參數: -Wall
     51
     52說明: 輸出較多的警告訊息,以便找出程式的錯誤。
     53
     54範例: 編譯 test.c 時輸出較多的警告訊息。
     55
     56gcc -Wall test.c
     57
     58參數: -g
     59
     60說明: 在編譯出可執行檔時,附加執行時除錯資訊,以供 gdb 讀取 (若要使用 ABSoft 的除錯程式,則須將參數改為 -gdwarf )。
     61
     62範例: 將 'test.c' 編譯成可執行檔 'test',並附加除錯資訊。
     63
     64gcc -g test.c -o test
     65
     66
     67
     68進階參數
     691. 僅編譯成 object 檔。
     70參數: -c
     71
     72說明: 僅編譯成 object 檔而不進行程式庫聯結。
     73
     74範例: 將 test.c 編譯成 object 檔 test.o。
     75
     76gcc -c test.c -o test.o
     77
     782. 聯結數個 object 成可執行檔。
     79
     80範例: 將 'test1.o'、'test2.o' 和程式庫聯結後成為可執行檔 test。
     81
     82gcc test1.o test2.o -o test
     83
     843. 觀察巨集展開情形:
     85
     86參數: -E
     87
     88說明:展開程式中的巨集以便了解巨集是否依照預期方式展開。
     89
     90範例:將 test1.c 中的巨集展開後儲存到 test1.c.ext 。
     91
     92gcc -E test1.c > test1.c.ext
     93
     944. 產生組合語言程式碼:
     95
     96參數: -S
     97
     98範例:編譯 test.c 產生對應的組合語言程式碼檔 test.s。
     99
     100gcc -S test.c -o test.s
     101
     102編譯參數列表 -o out_put_filename 將編譯後產生的檔名設為 out_put_filename
     103-O 編譯時做最佳化,以增加程式執行效率。
     104-c 將原始語言編譯成 .o 檔(object檔) 不做程式庫連結的工作。
     105-g 編譯出 .o 檔時,保留除錯的資訊,在連結後產生的可執行檔中包含 gdb 需要的資訊。(若要給 ABSoft 的除錯程式使用,須將此參數改為 -gdwarg )
     106-E 將原始語言編譯將 test.c 中的巨集展開,之後輸出到 stdout。
     107-L/usr/X11R6/lib 連結程式時,搜尋程式庫檔時,將 /usr/X11R6/lib 列入搜尋目錄。
     108-lm 在連結程式時,將 libm.a 列入搜尋檔案中。
     109-I/usr/X11R6/include 到 /usr/X11R6/include 找尋被 include 的檔案。
     110-S 產生 test.c 對應的組合語言程式檔 test.s 。
     111-Wall 產生比較多的警告訊息 (平常不須使用,但當找不到程式中的錯誤時,可以加以使用。)
     112
     113
     114
     115快速入門
     116
     117
     118範例:將 test.c 編譯成可執行檔 test 並在編譯過程中做最佳化。
     119
     120gcc -O test.c -o test
     121
     122範例: 將 test1.c 和 test2.c 編譯聯結成可執行檔 test 並在編譯過程中做最佳化。
     123
     124gcc -O test1.c test2.c -o test
     125
     126
     127範例:若程式中有使用數學函數如 sin 等,編譯時須加入 -lm 。
     128
     129gcc -O test.c -o test -lm
     130
     131範例:發現程式有執行時錯誤,編譯後需用 GDB 除錯。
     132
     133gcc -O -g test.c -o test
     134
     135範例:發現程式有執行時錯誤,編譯後要跟 ABSoft F77 聯結後以 ABSoft 的除錯程式除錯。
     136gcc -O -gdwarf test.c -o test
     137
     138
     139更多的說明
     140man gcc
     141info gcc
    8142
    9143== Error  ==
     
    20154}}}
    21155或使用 '''g++ compiler'''。
     156
     157= Reference =
     158 *