GCC编译器选项解析

GCC编译器选项解析

总览

总览(SYNOPSIS)

gcc [options] filename ...
g++ [options] filename ...       

总体选项(Overall Option)

选项 解释
-c 编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件.
-o 指定输出文件,如果没有使用 -o 选项,默认的输出结果是:可执行文件为 a.out

调试选项(DEBUGGING OPTION)

选项 解释
-g 以操作系统的本地格式(stabs, COFF, XCOFF,或DWARF),产生调试信息,GDB能够使用这些调试信息
-glevel 请求生成调试信息,同时用level指出需要多少信息,默认的level值是2;
level1: 输出最少量的信息,仅够在不打算调试的程序段内backtrace.包括函数和外部变量的描述,但是 没有局部变量和行号信息;
Level3: 包含更多的信息,如程序中出现的所有宏定义.当使用`-g3'选项的时候,某些调试器支持 宏扩展

预处理器选项(Preprocessor Option)

选项 解释
-Dmacro x
-Dmacro=defn 定义宏macro的内容为defn
-Umacro 取消宏macro,-U 选项在所有的 -D 选项之后处理

连接器选项(LINKER OPTION)

选项 解释
-llibrary 连接名为library的库文件
-shared 生成一个共享目标文件,常搭配 -fPIC 使用
-Wl,option 把选项option传递给连接器.如果option中含有逗号,就在逗号处分割成多个选项.
-symbolic 建立共享目标文件的时候,把引用绑定到全局符号上

目录选项(DIRECTORY OPTION)

选项 解释
-Idir 头文件搜索路径列表中添加 dir 目录
-Ldir -l 选项库文件搜索路径列表中添加 dir 目录

警告选项(WARNING OPTION)

选项 解释
-w 禁止所有警告信息(不建议使用)
-Wall 开启大部分警告提示(建议使用)
-Werror 视警告为错误;出现任何警告即放弃编译

优化选项(OPTIMIZATION OPTION)

选项 解释
-O0 不优化
-O1 优化.对于大函数,优化编译占用稍微多的时间和相当大的内存.
-O2 多优化一些.除了涉及空间和速度交换的优化选项,执行几乎所有的优化工作.例如不进行循环展开(loop unrolling)和函数内嵌(inlining).
和-O选项比较,这个选项既增加了编译时间,也提高了生成代码的 运行效果.
-O3 优化的更多.除了打开-O2所做的一切,它还打开了-finline-functions选项
-ffloat-store 不要在寄存器中存放浮点变量.这样可以防止某些机器上不希望的过高精度,
如68000的浮点寄存器(来自 68881)保存的精度超过了double应该具有的精度.
对于大多数程序,过高精度只有好处.但是有些程序严格依赖于IEEE浮点数的定义.对这样的程序可以使用 -ffloat-store选项.

机器相关选项(MACHINE DEPENDENT OPTION)

选项 解释
-mhard-float 输出包含浮点指令的目标码.这是缺省选项
-msoft-float 警告:没有为SPARC提供GNU浮点库.一般说来使用该机型本地C编译器的相应部件,
但是不能直接用于交叉编译.你必须自己安排,提供用于交叉编译的库函数.
-msoft-float 改变了输出文件中的调用约定;因此只有用这个选项编译整个程序才有意义.

代码生成选项(CODE GENERATION OPTION)

选项 解释
-fpic 如果支持这种目标机,编译器就生成位置无关目标码.适用于共享库(shared library).
-fPIC 如果支持这种目标机,编译器就输出位置无关目标码.
适用于动态连接(dynamic linking),即使分支需要大范围 转移.

语言选项(LANGUAGE OPTIONS)

选项 解释
-ansi 支持符合ANSI标准的C程序
-std=c99 C99标准
-std=c++11 支持c++11

参考:
GNU GCC 手册
gcc常用编译选项汇总
GCC编译详解

你可能感兴趣的:(GCC编译器选项解析)