精華區beta b92902xxx 關於我們 聯絡資訊
from itrs.board@bbs.hs.ntnu.edu.tw 作者 camel (飛呀!愛做夢的小駱駝) 看板 ITRS 標題 gcc的參數說明 時間 Fri Oct 6 23:25:26 2000 ─────────────────────────────────────── made by camel Last update Feb. 3 2001 常用參數 ============================================================ gcc -c 產生 .o檔 gcc -Wall warning 全開 gcc -ansi 遵照ANSI的語法規範, 比方說C++的註解方式在使用此參數編譯 時會得到error gcc -l 連結指定的函式庫, 當非預設路徑的函式庫中的函式被使用時 需指定之, 並請將此參數加在叫用的程式後 gcc -L 指定非預設的函式庫(library: .so, .a)目錄位置 gcc -I 指定非預設的標頭檔(header: .h)目錄位置 gcc -o 指定產生的可執行檔的檔名 gcc -O[0-2] 將程式最佳化, 0表不最佳化, 2為目前的最高值, 注意:1.此參數在使用C++時會較明顯 2.不要將此參數和-g並用, 會讓gdb的動作變複雓 gcc -g 記錄程式執行中的訊息, 以便core dump時使用gdb除錯 gcc -pg 記錄程式執行中的訊息, 以便gprof分析效率 冷僻參數 ^^ ============================================================ gcc -E 呼叫cpp產生前端處理(#include, #define...)至標準輸出. 不會改變程式檔 gcc -S 編譯成組語, 產生.s檔 gcc -s 移除符號表, 可節省執行檔大小, 建譯在完全OK後再用 ( 符號表移除後, 就無法使用debug tools ) gcc --traditional 以老 式的方式來編譯程式, 主要的差別在於前置處理會有不同 (ex: #define的展開) some example: ============================================================ gcc a.c -lm 在a.c中有使用到math.h的函式, 所以需用-lm連結之 gcc -g a.c -o a 編譯a.c產生名為a的執行檔, 並在core dump時可提供gdb訊息 有看過IOCCC某年的冠軍碼嗎? 那個程式長得像球的碼 若你用gcc時沒加--traditional, 它會把#define展開時前後加上空白 因此, 該碼出來的結果會變成0.25而不是3.14 -- By The Camel who can fly high and fall down to the ground -- ╔╗ ╔ ╬ ╠╣ ╔╬╔╗ ══╗╗ ╚╣═╗ ╬╗╠╣ ╬║╝ ╦║╚╝ ╔╝ ╯ ║╝ ║ ╚╝╚╚╝ ╗╠╚╗ ╬╬╗╗╔ ╰╯ ╚╣╔╬ ║╔ ◇ ╗ ╠╩╗╚╝╔║║╚═ ╚╝ ╝╚═╝╚ ╚══╚╝║ ﹋ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.85.134.246
Favonia:// 註解方式不再是C++特有,C99已經包含 推 203.64.26.1 10/05