作者flyhermit (Hierophant)
看板b92902xxx
标题gcc参数说明
时间Sun Oct 5 08:18:10 2003
from
[email protected]
作者 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
1F:→ Favonia:// 注解方式不再是C++特有,C99已经包含 推 203.64.26.1 10/05