一些常用到的編譯旗標,如下
-c: 只建立obj檔,留待後面才來連結(link)
-S: 只建立assemblely檔。
-g: 建立一些除錯資訊給可執行檔,這樣debug工具ddd,gdb才能除錯。
-o: 把建立的二位元檔給另外名字,因為可執行檔最後內定名字是a.out。
-D: 條件編譯,搭配#ifdef #define用。如果有defined才編譯
-W: 編譯時出錯時,顯示錯誤訊息的條件。
-L: 給連結時要用到的函式庫的搜尋目錄。
-I: 標頭檔.h的搜尋目錄。
-O1 -O2 -O3: 最佳化,會根據CPU的架構編出好的程式碼,需要多一點編譯時間。
-O2 是不錯的選擇。
|
$ gcc -c -o test.o test.c
$ gcc -S -o test.s test.c
$ gcc -g -o test test.c
$ gcc -DSOLARIS -o test test.c
$ gcc -Wall -L./lib/ -I./include/ -o test test.c
|