重要的選項或旗標(FLAGS)

一些常用到的編譯旗標,如下
-c: 只建立obj檔,留待後面才來連結(link)

-S: 只建立assemblely檔。

-g: 建立一些除錯資訊給可執行檔,這樣debug工具ddd,gdb才能除錯。

-o: 把建立的二位元檔給另外名字,因為可執行檔最後內定名字是a.out。

-D: 條件編譯,搭配#ifdef #define用。如果有defined才編譯

-W: 編譯時出錯時,顯示錯誤訊息的條件。

-L: 給連結時要用到的函式庫的搜尋目錄。

-I: 標頭檔.h的搜尋目錄。

-l: 正常連結只會在libc這個函數庫,其他函數庫需要用這個指定連結。

-O1 -O2 -O3: 最佳化,會根據CPU的架構編出好的程式碼,需要多一點編譯時間。
	     -O2  是不錯的選擇。
      
像這樣的例子
$ gcc -c -o test.o test.c
$ gcc -S -o test.s test.c
$ gcc -g -o test.o test.c
$ gcc -D_SOLARIS_ -o test test.c
$ gcc -Wall -L./lib/ -I./include/ -o foo.o foo.c
$ gcc -Wall -L../lib -I../include -lX11 -lXext -lm -o xprog xprog.c
      
W用all表示所有的編譯warning都要秀出來。