→ Favonia:// 註解方式不再是C++特有,C99已經包含 推 203.64.26.1 10/05
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