gcc编译部分编译选项

我只写出一些我没有在文档中查到的,网上也搜索不出来什么明确的资料。正确性实在不敢保证。
https://gcc.gnu.org/onlinedocs/gcc-7.3.0/gcc/Option-Summary.html#Option-Summary 这是文档。

使用gcc命令显示的帮助信息

用法:gcc [选项] 文件...  
选项:  
  -pass-exit-codes         在某一阶段退出时返回最高的错误码  
  --help                   显示此帮助说明  
  --target-help            显示目标机器特定的命令行选项  
  --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]  
                           显示特定类型的命令行选项  
  --version                显示编译器版本信息  
  -dumpspecs               显示所有内建 spec 字符串  
  -dumpversion             显示编译器的版本号  
  -dumpmachine             显示编译器的目标处理器  
  -print-search-dirs       显示编译器的搜索路径  
  -print-libgcc-file-name  显示编译器伴随库的名称  
  -print-file-name=<库>    显示 <库> 的完整路径  
  -print-prog-name=<程序>  显示编译器组件 <程序> 的完整路径  
  -print-multiarch         Display the target's normalized GNU triplet, used as  
                           a component in the library path  
  -print-multi-directory   显示不同版本 libgcc 的根目录  
  -print-multi-lib         显示命令行选项和多个版本库搜索路径间的映射  
  -print-multi-os-directory 显示操作系统库的相对路径  
  -print-sysroot           显示目标库目录  
  -print-sysroot-headers-suffix 显示用于寻找头文件的 sysroot 后缀  
  -Wa,<选项>               将逗号分隔的 <选项> 传递给汇编器  
  -Wp,<选项>               将逗号分隔的 <选项> 传递给预处理器  
  -Wl,<选项>               将逗号分隔的 <选项> 传递给链接器  
  -Xassembler <参数>       将 <参数> 传递给汇编器  
  -Xpreprocessor <参数>    将 <参数> 传递给预处理器  
  -Xlinker <参数>          将 <参数> 传递给链接器  
  -save-temps              不删除中间文件  
  -save-temps=        不删除中间文件  
  -no-canonical-prefixes   生成其他 gcc 组件的相对路径时不生成规范化的  
                           前缀  
  -pipe                    使用管道代替临时文件  
  -time                    为每个子进程计时  
  -specs=<文件>            用 <文件> 的内容覆盖内建的 specs 文件  
  -std=<标准>              指定输入源文件遵循的标准  
  --sysroot=<目录>         将 <目录> 作为头文件和库文件的根目录  
  -B <目录>                将 <目录> 添加到编译器的搜索路径中  
  -v                       显示编译器调用的程序  
  -###                     与 -v 类似,但选项被引号括住,并且不执行命令  
  -E                       仅作预处理,不进行编译、汇编和链接  
  -S                       编译到汇编语言,不进行汇编和链接  
  -c                       编译、汇编到目标代码,不进行链接  
  -o <文件>                输出到 <文件>  
  -pie                     Create a position independent executable  
  -shared                  Create a shared library  
  -x <语言>                指定其后输入文件的语言  
                           允许的语言包括:c c++ assembler none  
                           ‘none’意味着恢复默认行为,即根据文件的扩展名猜测  
                           源文件的语言  

以 -g、-f、-m、-O、-W 或 --param 开头的选项将由 gcc 自动传递给其调用的  
 不同子进程。若要向这些进程传递其他选项,必须使用 -W<字母> 选项。  

下列选项只与特定语言相关 Ada:  
 找不到对应的选项。使用 --help=Ada 显示 Ada 前端所支持的所有选项  

下列选项只与特定语言相关 AdaSCIL:  
 找不到对应的选项。使用 --help=AdaSCIL 显示 AdaSCIL 前端所支持的所有选项  

下列选项只与特定语言相关 AdaWhy:  
 找不到对应的选项。使用 --help=AdaWhy 显示 AdaWhy 前端所支持的所有选项  

下列选项只与特定语言相关 C:  
  -lang-asm                   此开关缺少可用文档  

下列选项只与特定语言相关 C++:  
 找不到对应的选项。使用 --help=C++ 显示 C++ 前端所支持的所有选项  

下列选项只与特定语言相关 Fortran:  
  -J<目录>                  将 MODULE 文件放入目录  
  -Waliasing                  为可能的虚参重叠给出警告  
  -Walign-commons             对 COMMON 块对齐的警告  
  -Wampersand                 若延续字符常量中缺少 & 则给出警告  
  -Warray-temporaries         创建临时数组时给出警告  
  -Wc-binding-type            Warn if the type of a variable might be not  
                              interoperable with C  
  -Wcharacter-truncation      对被截断的字符表达式给出警告  
  -Wcompare-reals             Warn about equality comparisons involving REAL or  
                              COMPLEX expressions  
  -Wconversion-extra          对大多数隐式类型转换给出警告  
  -Wextra                     打印额外(可能您并不想要)的警告信息  
  -Wfunction-elimination      Warn about function call elimination  
  -Wimplicit-interface        对带有隐式接口的调用给出警告  
  -Wimplicit-procedure        对没有隐式声明的过程调用给出警告  
  -Wintrinsic-shadow          如果用户过程有与内建过程相同的名字则警告  
  -Wintrinsics-std            当内建函数不是所选标准的一部分时给出警告  
  -Wline-truncation           对被截断的源文件行给出警告  
  -Wreal-q-constant           Warn about real-literal-constants with 'q'  
                              exponent-letter  
  -Wrealloc-lhs               Warn when a left-hand-side array variable is  
                              reallocated  
  -Wrealloc-lhs-all           Warn when a left-hand-side variable is reallocated  
  -Wsurprising                对“可疑”的构造给出警告  
  -Wtabs                      允许使用不符合规范的制表符  
  -Wtarget-lifetime           Warn if the pointer in a pointer assignment might  
                              outlive its target  
  -Wunderflow                 数字常量表达式下溢时警告  
  -Wunused-dummy-argument     对未使用的哑元给出警告。  
  -cpp                        启用预处理  
  -cpp=                       此开关缺少可用文档  
  -faggressive-function-elimination Eliminate multiple function invokations  
                              also for impure functions  
  -falign-commons             对齐 COMMON 块  
  -fall-intrinsics            无论选择何种标准,所有内建过程均可用  
  -fallow-leading-underscore  此开关缺少可用文档  
  -fautomatic                 不把局部变量 和 COMMON 块如它们在  
                              SAVE 语句中被命名那样来处理  
  -fbackslash                 指定字符串中的反斜杠引入一个转义字符  
  -fbacktrace                 遇到运行时错误时打印函数调用回溯  
  -fblas-matmul-limit=     使用 BLAS  
                              进行矩阵乘法的矩阵大小下限  
  -fcheck-array-temporaries   对为过程参数而临时创建的数组产生一个运行时警告  
  -fcheck=[...]               指定要进行哪种运行时检查  
  -fcoarray=[...]             指定要使用的集合数组并行化  
  -fconvert=big-endian        为未格式化的文件使用大端在前的格式  
  -fconvert=little-endian     为未格式化的文件使用小端在前的格式  
  -fconvert=native            对未格式化的文件,使用本地格式  
  -fconvert=swap              对未格式化的文件,交换字节次序  
  -fcray-pointer              使用 Cray 指针扩展  
  -fd-lines-as-code           在固定格式中忽略第一列的‘D’  
  -fd-lines-as-comments       将第一列为‘D’的行视作注释  
  -fdefault-double-8          将默认双精度种别设为 8 字节宽  
  -fdefault-integer-8         将默认整数种别设为 8 字节宽  
  -fdefault-real-8            将默认实型种别设为 8 字节宽  
  -fdollar-ok                 允许在实体名中使用美元符号  
  -fdump-core                 不起作用。为向前兼容保留的选项。  
  -fdump-fortran-optimized    Display the code tree after front end optimization  
  -fdump-fortran-original     解析后显示代码树  
  -fdump-parse-tree           Display the code tree after parsing; deprecated  
                              option  
  -fexternal-blas             为大尺寸数组调用 matmul  
                              时应当使用一个外部 BLAS 库  
  -ff2c                       使用 f2c 调用约定  
  -ffixed-form                假定源文件是固定格式的  
  -ffixed-line-length-     在固定模式下以 n 作为字符行宽  
  -ffixed-line-length-none    在固定模式下允许任意的字符行宽  
  -ffpe-trap=[...]            在以下浮点异常的情况下停止  
  -ffree-form                 假定源文件是自由格式  
  -ffree-line-length-      在自由模式下以 n 作为字符行宽  
  -ffree-line-length-none     在自由模式下允许任意的字符行宽  
  -ffrontend-optimize         Enable front end optimization  
  -fimplicit-none             不允许使用隐式类型,除非显式地使用了  
                              IMPLICIT 语句  
  -finit-character=        将局部字符变量初始化 ASCII 值 n  
  -finit-integer=          将局部整数变量初始化为 n  
  -finit-local-zero           局部变量初始化为零(与  g77 相同)  
  -finit-logical= 初始化局部逻辑变量  
  -finit-real= 初始化局部实变量  
  -finteger-4-integer-8       Interpret any INTEGER(4) as an INTEGER(8)  
  -fintrinsic-modules-path    指定编译好的内建模块的位置  
  -fintrinsic-modules-path=   指定编译好的内建模块的位置  
  -fmax-array-constructor= 一个数组构造函数中对象的最大数目  
  -fmax-identifier-length= 标识符的最大长度  
  -fmax-stack-var-size=    以字节大小表示的可以被放入堆栈的数组的最大大小  
  -fmax-subrecord-length=  子记录的最大长度  
  -fmodule-private            将模块实体的默认访问权限设置为  
                              PRIVATE。  
  -fpack-derived              为派生类型使用尽可能紧实的布局  
  -fprotect-parens            尊重表达式中的括号  
  -frange-check               启用编译时范围检查  
  -freal-4-real-10            Interpret any REAL(4) as a REAL(10)  
  -freal-4-real-16            Interpret any REAL(4) as a REAL(16)  
  -freal-4-real-8             Interpret any REAL(4) as a REAL(8)  
  -freal-8-real-10            Interpret any REAL(8) as a REAL(10)  
  -freal-8-real-16            Interpret any REAL(8) as a REAL(16)  
  -freal-8-real-4             Interpret any REAL(8) as a REAL(4)  
  -frealloc-lhs               在赋值中重分配左值  
  -frecord-marker=4           对未格式化的文件,使用一个 4  
                              字节的记录标记  
  -frecord-marker=8           对未格式化的文件,使用一个 8  
                              字节的记录格式  
  -frecursive                 在堆栈上分配局部变量以允许间接递归  
  -frepack-arrays             在过程入口处将数组段复制到一个连续的块中  
  -fsecond-underscore         当名字已经包含一个下划线时添加第二个下划线  
  -fsign-zero                 在零值前使用负号  
  -fstack-arrays              Put all local arrays on stack.  
  -funderscoring              为外部可见的名字添加下划线  
  -fwhole-file                立即编译所有程序单元并检查接口  
  -nocpp                      禁用预处理  
  -static-libgfortran         静态链接 GNU Fortran 助手库(libgfortran)  
  -std=f2003                  遵循 ISO Fortran 2003 标准  
  -std=f2008                  遵循 ISO Fortran 2008 标准  
  -std=f2008ts                Conform to the ISO Fortran 2008 standard  
                              including TS 29113  
  -std=f95                    遵循 ISO Fortran 95 标准  
  -std=gnu                    不特别遵循任何标准  
  -std=legacy                 接受一定的扩展以支持传统的代码  

下列选项只与特定语言相关 Go:  
  -L                          此开关缺少可用文档  
  -fgo-check-divide-overflow  Add explicit checks for division overflow in  
                              INT_MIN / -1  
  -fgo-check-divide-zero      Add explicit checks for division by zero  
  -fgo-dump-            Dump Go frontend internal information  
  -fgo-optimize-        Turn on optimization passes in the frontend  
  -fgo-pkgpath=       Set Go package path  
  -fgo-prefix=        Set package-specific prefix for exported Go names  
  -fgo-relative-import-path=  -fgo-relative-import-path= Treat a relative  
                              import as relative to path  
  -frequire-return-statement  Functions which return values must end with  
                              return statements  

下列选项只与特定语言相关 Java:  
  --CLASSPATH                 此开关缺少可用文档  
  --bootclasspath             此开关缺少可用文档  
  --classpath                 此开关缺少可用文档  
  --encoding                  此开关缺少可用文档  
  --extdirs                   此开关缺少可用文档  
  --output-class-directory    此开关缺少可用文档  
  --output-class-directory=   此开关缺少可用文档  
  --resource                  此开关缺少可用文档  
  --resource=                 此开关缺少可用文档  
  -CLASSPATH                  此开关缺少可用文档  
  -MD_                        此开关缺少可用文档  
  -MMD_                       此开关缺少可用文档  
  -Wall-deprecation           此开关缺少可用文档  
  -Wall-javadoc               此开关缺少可用文档  
  -Wassert-identifier         此开关缺少可用文档  
  -Wboxing                    此开关缺少可用文档  
  -Wchar-concat               此开关缺少可用文档  
  -Wcondition-assign          此开关缺少可用文档  
  -Wconstructor-name          此开关缺少可用文档  
  -Wdep-ann                   此开关缺少可用文档  
  -Wdiscouraged               此开关缺少可用文档  
  -Wempty-block               此开关缺少可用文档  
  -Wenum-identifier           此开关缺少可用文档  
  -Wenum-switch               此开关缺少可用文档  
  -Wextraneous-semicolon      发现不建议使用的空语句时给出警告  
  -Wfallthrough               此开关缺少可用文档  
  -Wfield-hiding              此开关缺少可用文档  
  -Wfinal-bound               此开关缺少可用文档  
  -Wfinally                   此开关缺少可用文档  
  -Wforbidden                 此开关缺少可用文档  
  -Whiding                    此开关缺少可用文档  
  -Windirect-static           此开关缺少可用文档  
  -Wintf-annotation           此开关缺少可用文档  
  -Wintf-non-inherited        此开关缺少可用文档  
  -Wjavadoc                   此开关缺少可用文档  
  -Wlocal-hiding              此开关缺少可用文档  
  -Wmasked-catch-block        此开关缺少可用文档  
  -Wnls                       此开关缺少可用文档  
  -Wno-effect-assign          此开关缺少可用文档  
  -Wnull                      此开关缺少可用文档  
  -Wout-of-date               当 .class 文件已过时时给出警告  
  -Wover-ann                  此开关缺少可用文档  
  -Wparam-assign              此开关缺少可用文档  
  -Wpkg-default-method        此开关缺少可用文档  
  -Wraw                       此开关缺少可用文档  
  -Wredundant-modifiers       当指定了不必须的修饰符时给出警告  
  -Wserial                    此开关缺少可用文档  
  -Wspecial-param-hiding      此开关缺少可用文档  
  -Wstatic-access             此开关缺少可用文档  
  -Wstatic-receiver           此开关缺少可用文档  
  -Wsuppress                  此开关缺少可用文档  
  -Wsynthetic-access          此开关缺少可用文档  
  -Wtasks                     此开关缺少可用文档  
  -Wtype-hiding               此开关缺少可用文档  
  -Wuncheck                   此开关缺少可用文档  
  -Wunnecessary-else          此开关缺少可用文档  
  -Wunqualified-field         此开关缺少可用文档  
  -Wunused-argument           此开关缺少可用文档  
  -Wunused-import             此开关缺少可用文档  
  -Wunused-label              有未使用的标号时警告  
  -Wunused-local              此开关缺少可用文档  
  -Wunused-private            此开关缺少可用文档  
  -Wunused-thrown             此开关缺少可用文档  
  -Wuseless-type-check        此开关缺少可用文档  
  -Wvarargs-cast              此开关缺少可用文档  
  -Wwarning-token             此开关缺少可用文档  
  -bootclasspath              此开关缺少可用文档  
  -classpath                  此开关缺少可用文档  
  -encoding                   此开关缺少可用文档  
  --CLASSPATH                 不建议使用;请改用 --classpath  
  -fassert                    允许使用 assert 关键字  
  -fassume-compiled           此开关缺少可用文档  
  -fassume-compiled=          此开关缺少可用文档  
  -faux-classpath             此开关缺少可用文档  
  --bootclasspath=<路径>    替换系统路径  
  -fbootstrap-classes         生成的类可被自举加载  
  -fcheck-references          检查指向 NULL 的引用  
  --classpath=<路径>        设置类路径  
  -fcompile-resource=         此开关缺少可用文档  
  -fdisable-assertions        此开关缺少可用文档  
  -fdisable-assertions=       此开关缺少可用文档  
  -femit-class-file           输出一个 class 文件  
  -femit-class-files          -fmit-class-file 的别名  
  -fenable-assertions         此开关缺少可用文档  
  -fenable-assertions=        此开关缺少可用文档  
  --encoding=<编码>         选择输入编码(默认来自您的区域选项)  
  --extdirs=<路径>          设定扩展目录  
  -ffilelist-file             输入文件是一个文件名列表,指定了需要编译的文件  
  -fforce-classes-archive-check 总是检查非 gcj 生成的类文档  
  -fhash-synchronization      假定运行时使用一张散列表完成从对象到其同步结构的映射  
  -findirect-classes          在运行时生成类的实例  
  -findirect-dispatch         为虚方法调用使用偏移表  
  -finline-functions          Integrate functions not declared "inline" into  
                              their callers when profitable  
  -fjni                       假定本地函数使用 JNI 实现  
  -foptimize-static-class-initialization 启用静态类初始代码优化  
  -foutput-class-dir=         此开关缺少可用文档  
  -freduced-reflection        减少生成的反射元数据  
  -fsaw-java-file             此开关缺少可用文档  
  -fsource-filename=          此开关缺少可用文档  
  -fsource=                   设定源语言版本  
  -fstore-check               存储到对象数组时进行可赋值性检查  
  -ftarget=                   指定目标虚拟机的版本  
  -fuse-atomic-builtins       为内建原子操作生成代码  
  -fuse-boehm-gc              为 Boehm 生成代码  
  -fuse-divide-subroutine     调用一个库子程序来完成整数除法  
  -version                    显示编译器版本  

下列选项只与特定语言相关 LTO:  
  -fltrans                    在局部转化(LTRANS)模式下运行链接时优化器。  
  -fltrans-output-list=       指定存放 LTRANS  
                              输出的文件列表的文件。  
  -fresolution=               符号解析文件  
  -fwpa                       在全程序分析(WPA)模式下运行链接时优化器。  

下列选项只与特定语言相关 ObjC:  
 找不到对应的选项。使用 --help=ObjC 显示 ObjC 前端所支持的所有选项  

下列选项只与特定语言相关 ObjC++:  
  -fobjc-call-cxx-cdtors      如果需要,生成特殊的 Objective-C  
                              方法来初始化/析构非简单旧数据 C++  
                              变量  

下列选项与语言相关:  
  --all-warnings              此开关缺少可用文档  
  --ansi                      此开关缺少可用文档  
  --assert                    此开关缺少可用文档  
  --assert=                   此开关缺少可用文档  
  --comments                  此开关缺少可用文档  
  --comments-in-macros        此开关缺少可用文档  
  --define-macro              此开关缺少可用文档  
  --define-macro=             此开关缺少可用文档  
  --dependencies              此开关缺少可用文档  
  --dump                      此开关缺少可用文档  
  --dump=                     此开关缺少可用文档  
  --imacros                   此开关缺少可用文档  
  --imacros=                  此开关缺少可用文档  
  --include                   此开关缺少可用文档  
  --include-barrier           此开关缺少可用文档  
  --include-directory         此开关缺少可用文档  
  --include-directory-after   此开关缺少可用文档  
  --include-directory-after=  此开关缺少可用文档  
  --include-directory=        此开关缺少可用文档  
  --include-prefix            此开关缺少可用文档  
  --include-prefix=           此开关缺少可用文档  
  --include-with-prefix       此开关缺少可用文档  
  --include-with-prefix-after 此开关缺少可用文档  
  --include-with-prefix-after= 此开关缺少可用文档  
  --include-with-prefix-before 此开关缺少可用文档  
  --include-with-prefix-before= 此开关缺少可用文档  
  --include-with-prefix=      此开关缺少可用文档  
  --include=                  此开关缺少可用文档  
  --no-line-commands          此开关缺少可用文档  
  --no-standard-includes      此开关缺少可用文档  
  --no-standard-libraries     此开关缺少可用文档  
  --no-warnings               此开关缺少可用文档  
  --output                    此开关缺少可用文档  
  --output-pch=               此开关缺少可用文档  
  --output=                   此开关缺少可用文档  
  --pedantic                  此开关缺少可用文档  
  --preprocess                此开关缺少可用文档  
  --print-missing-file-dependencies 此开关缺少可用文档  
  --trace-includes            此开关缺少可用文档  
  --traditional-cpp           此开关缺少可用文档  
  --trigraphs                 此开关缺少可用文档  
  --undefine-macro            此开关缺少可用文档  
  --undefine-macro=           此开关缺少可用文档  
  --user-dependencies         此开关缺少可用文档  
  --verbose                   此开关缺少可用文档  
  --write-dependencies        此开关缺少可用文档  
  --write-user-dependencies   此开关缺少可用文档  
  -A<问题>=<答案>         给出问题的答案。在问题前加一个‘-’将禁用其答案  
  -C                          不丢弃注释  
  -CC                         展开宏时不丢弃注释  
  -D<宏>[=<值>]             将宏定义为值。如果只给出了宏,值将被定为  
                              1  
  -E                          此开关缺少可用文档  
  -F <目录>                 将目录添加至主框架包含路径的末尾  
  -H                          打印使用到的头文件名  
  -I <目录>                 将目录添加至主包含路径末尾  
  -M                          生成 make 依赖项  
  -MD                         生成 make 依赖规则并编译  
  -MF <文件>                将依赖项输出到给定文件  
  -MG                         将缺失的头文件看作生成的文件  
  -MM                         与 -M 类似但是忽略系统头文件  
  -MMD                        与 -MD 类似但是忽略系统头文件  
  -MP                         为所有头文件生成伪目标  
  -MQ <目标>                添加一个 MAKE 括起的目标  
  -MT <目标>                添加一个不被括起的目标  
  -P                          不生成 #line 指令  
  -U<宏>                     取消定义宏  
  -Wabi                       当结果与 ABI  
                              相容的编译器的编译结果不同时给出警告  
  -Wabi-tag                   Warn if a subobject has an abi_tag attribute that  
                              the complete object type does not have  
  -Waddress                   使用可疑的内存地址时给出警告  
  -Wall                       启用大部分警告信息  
  -Wassign-intercept          当 Objective-C  
                              赋值可能为垃圾回收所介入时给出警告  
  -Wbad-function-cast         当把函数转换为不兼容类型时给出警告  
  -Wbuiltin-macro-redefined   当内建预处理宏未定义或重定义时给出警告  
  -Wc++-compat                当在 C 语言中使用了 C 与 C++  
                              交集以外的构造时给出警告  
  -Wc++0x-compat              Deprecated in favor of -Wc++11-compat  
  -Wc++11-compat              Warn about C++ constructs whose meaning differs  
                              between ISO C++ 1998 and ISO C++ 2011  
  -Wcast-qual                 当类型转换丢失限定信息时给出警告  
  -Wchar-subscripts           当下标类型为“char”时给出警告  
  -Wclobbered                 对能为"longjmp"或"vfork"所篡改的变量给出警告  
  -Wcomment                   对可能嵌套的注释和长度超过一个物理行长的  
                              C++ 注释给出警告  
  -Wcomments                  -Wcomment 的同义词  
  -Wconversion                当隐式类型转换可能改变值时给出警告  
  -Wconversion-null           将 NULL 转换为非指针类型时给出警告  
  -Wctor-dtor-privacy         当所有构造函数和析构函数都是私有时给出警告  
  -Wdeclaration-after-statement 当声明出现在语句后时给出警告  
  -Wdelete-non-virtual-dtor   Warn about deleting polymorphic objects with non-  
                              virtual destructors  
  -Wdeprecated                使用不建议的编译器特性、类、方法或字段时给出警告  
  -Wdiv-by-zero               对编译时发现的零除给出警告  
  -Wdouble-promotion          对从“float”到“double”的隐式转换给出警告  
  -Weffc++                    对不遵循《Effetive  
                              C++》的风格给出警告  
  -Wempty-body                当 if 或 else 语句体为空时给出警告  
  -Wendif-labels              当 #elif 和 #endif  
                              后面跟有其他标识符时给出警告  
  -Wenum-compare              对不同枚举类型之间的比较给出警告  
  -Werror                     所有的警告都当作是错误  
  -Werror-implicit-function-declaration 不建议使用此开关;请改用  
                              -Werror=implicit-function-declaration  
  -Wfloat-equal               当比较浮点数是否相等时给出警告  
  -Wformat                    对 printf/scanf/strftime/strfmon  
                              中的格式字符串异常给出警告  
  -Wformat-contains-nul       当格式字符串包含 NUL 字节时给出警告  
  -Wformat-extra-args         当传递给格式字符串的参数太多时给出警告  
  -Wformat-nonliteral         当格式字符串不是字面值时给出警告  
  -Wformat-security           当使用格式字符串的函数可能导致安全问题时给出警告  
  -Wformat-y2k                当 strftime 格式给出 2  
                              位记年时给出警告  
  -Wformat-zero-length        对长度为 0 的格式字符串给出警告  
  -Wformat=                   对 printf/scanf/strftime/strfmon  
                              中的格式字符串异常给出警告  
  -Wignored-qualifiers        当类型限定符被忽略时给出警告。  
  -Wimplicit                  对隐式函数声明给出警告  
  -Wimplicit-function-declaration 对隐式函数声明给出警告  
  -Wimplicit-int              当声明未指定类型时给出警告  
  -Wimport                    此开关缺少可用文档  
  -Winherited-variadic-ctor   Warn about C++11 inheriting constructors when the  
                              base has a variadic constructor  
  -Winit-self                 对初始化为自身的变量给出警告。  
  -Wint-to-pointer-cast       当将一个大小不同的整数转换为指针时给出警告  
  -Winvalid-offsetof          对“offsetof”宏无效的使用给出警告  
  -Winvalid-pch               在找到了 PCH  
                              文件但未使用的情况给出警告  
  -Wjump-misses-init          当跳转略过变量初始化时给出警告  
  -Wliteral-suffix            Warn when a string or character literal is  
                              followed by a ud-suffix which does not begin with  
                              an underscore.  
  -Wlogical-op                当逻辑操作结果似乎总为真或假时给出警告  
  -Wlong-long                 当使用 -pedantic 时不对“long  
                              long”给出警告  
  -Wmain                      对可疑的“main”声明给出警告  
  -Wmaybe-uninitialized       Warn about maybe uninitialized automatic variables  
  -Wmissing-braces            若初始值设定项中可能缺少花括号则给出警告  
  -Wmissing-declarations      当全局函数没有前向声明时给出警告  
  -Wmissing-field-initializers 若结构初始值设定项中缺少字段则给出警告  
  -Wmissing-format-attribute  此开关缺少可用文档  
  -Wmissing-include-dirs      当用户给定的包含目录不存在时给出警告  
  -Wmissing-parameter-type    K&R  
                              风格函数参数声明中未指定类型限定符时给出警告  
  -Wmissing-prototypes        全局函数没有原型时给出警告  
  -Wmudflap                   当构造未被 -fmudflap 处理时给出警告  
  -Wmultichar                 使用多字节字符集的字符常量时给出警告  
  -Wnarrowing                 Warn about narrowing conversions within { } that  
                              are ill-formed in C++11  
  -Wnested-externs            当“extern”声明不在文件作用域时给出警告  
  -Wnoexcept                  Warn when a noexcept expression evaluates to  
                              false even though the expression can't actually  
                              throw  
  -Wnon-template-friend       在模板内声明未模板化的友元函数时给出警告  
  -Wnon-virtual-dtor          当析构函数不是虚函数时给出警告  
  -Wnonnull                   当将 NULL 传递给需要非 NULL  
                              的参数的函数时给出警告  
  -Wnormalized=  对未归一化的 Unicode 字符串给出警告  
  -Wold-style-cast            程序使用 C  
                              风格的类型转换时给出警告  
  -Wold-style-declaration     对声明中的过时用法给出警告  
  -Wold-style-definition      使用旧式形参定义时给出警告  
  -Woverlength-strings        当字符串长度超过标准规定的可移植的最大长度时给出警告  
  -Woverloaded-virtual        重载虚函数名时给出警告  
  -Woverride-init             覆盖无副作用的初始值设定时给出警告  
  -Wpacked-bitfield-compat    当紧实位段的偏移量因 GCC 4.4  
                              而改变时给出警告  
  -Wparentheses               可能缺少括号的情况下给出警告  
  -Wpedantic                  给出标准指定的所有警告信息  
  -Wpmf-conversions           当改变成员函数指针的类型时给出警告  
  -Wpointer-arith             当在算术表达式中使用函数指针时给出警告  
  -Wpointer-sign              赋值时如指针符号不一致则给出警告  
  -Wpointer-to-int-cast       将一个指针转换为大小不同的整数时给出警告  
  -Wpragmas                   对错误使用的 pragma 加以警告  
  -Wproperty-assign-default   Warn if a property for an Objective-C object has  
                              no assign semantics specified  
  -Wprotocol                  当继承来的方法未被实现时给出警告  
  -Wpsabi                     此开关缺少可用文档  
  -Wredundant-decls           对同一个对象多次声明时给出警告  
  -Wreorder                   编译器将代码重新排序时给出警告  
  -Wreturn-local-addr         Warn about returning a pointer/reference to a  
                              local or temporary variable.  
  -Wreturn-type               当 C  
                              函数的返回值默认为“int”,或者 C++  
                              函数的返回类型不一致时给出警告  
  -Wselector                  当选择子有多个方法时给出警告  
  -Wsequence-point            当可能违反定序点规则时给出警告  
  -Wsign-compare              在有符号和无符号数间进行比较时给出警告  
  -Wsign-conversion           为有符号和无符号整数间的隐式类型转换给出警告  
  -Wsign-promo                当重载将无符号数提升为有符号数时给出警告  
  -Wsizeof-pointer-memaccess  此开关缺少可用文档  
  -Wstrict-aliasing=          当代码可能破坏强重叠规则时给出警告  
  -Wstrict-null-sentinel      将未作转换的 NULL  
                              用作哨兵时给出警告  
  -Wstrict-overflow=          禁用假定有符号数溢出行为未被定义的优化  
  -Wstrict-prototypes         使用了非原型的函数声明时给出警告  
  -Wstrict-selector-match     当备选方法的类型签字不完全匹配时给出警告  
  -Wsuggest-attribute=format  当函数可能是 format  
                              属性的备选时给出警告  
  -Wswitch                    当使用枚举类型作为开关变量,没有提供  
                              default 分支,但又缺少某个 case  
                              时给出警告  
  -Wswitch-default            当使用枚举类型作为开关变量,但没有提供“default”分支时给出警告  
  -Wswitch-enum               当使用枚举类型作为开关变量但又缺少某个  
                              case 时给出警告  
  -Wsync-nand                 当 __sync_fetch_and_nand 和  
                              __sync_nand_and_fetch  
                              内建函数被使用时给出警告  
  -Wsynth                     不建议使用。此开关不起作用。  
  -Wsystem-headers            不抑制系统头文件中的警告  
  -Wtraditional               使用了传统 C  
                              不支持的特性时给出警告  
  -Wtraditional-conversion    原型导致的类型转换与无原型时的类型转换不同时给出警告  
  -Wtrigraphs                 当三字母序列可能影响程序意义时给出警告  
  -Wundeclared-selector       当使用 @selector()  
                              却不作事先声明时给出警告  
  -Wundef                     当 #if  
                              指令中用到未定义的宏时给出警告  
  -Wuninitialized             自动变量未初始化时警告  
  -Wunknown-pragmas           对无法识别的 pragma 加以警告  
  -Wunsuffixed-float-constants 对不带后缀的浮点常量给出警告  
  -Wunused                    启用所有关于“XX未使用”的警告  
  -Wunused-local-typedefs     Warn when typedefs locally defined in a function  
                              are not used  
  -Wunused-macros             当定义在主文件中的宏未被使用时给出警告  
  -Wunused-result             当一个带有 warn_unused_result  
                              属性的函数的调用者未使用前者的返回值时给出警告  
  -Wuseless-cast              Warn about useless casts  
  -Wvarargs                   Warn about questionable usage of the macros used  
                              to retrieve variable arguments  
  -Wvariadic-macros           Warn about using variadic macros  
  -Wvirtual-move-assign       Warn if a virtual base has a non-trivial move  
                              assignment operator  
  -Wvla                       使用变长数组时警告  
  -Wvolatile-register-var     当一个寄存器变量被声明为 volatile  
                              时给出警告  
  -Wwrite-strings             在 C++  
                              中,非零值表示将字面字符串转换为‘char  
                              *’时给出警告。在 C  
                              中,给出相似的警告,但这种类型转换是符合  
                              ISO C 标准的。  
  -Wzero-as-null-pointer-constant Warn when a literal '0' is used as null  
                              pointer  
  -ansi                       -std=c89 (对 C 来说) 或 -std=c++98 (对 C++  
                              来说)的同义词  
  -d<字母>                  为指定的某趟汇译启用内存转储  
  -fRTS=                      Select the runtime  
  -faccess-control            执行类成员访问控制语义  
  -fada-spec-parent=          -fada-spec-parent=unit  Dump Ada specs as child  
                              units of given parent  
  -fall-virtual               此开关缺少可用文档  
  -fallow-parameterless-variadic-functions Allow variadic functions without  
                              named parameter  
  -falt-external-templates    不再受支持  
  -fasm                       识别“asm”关键字  
  -fbuilding-libgcc           此开关缺少可用文档  
  -fbuiltin                   识别内建函数  
  -fbuiltin-                  此开关缺少可用文档  
  -fcanonical-system-headers  Where shorter, use canonicalized paths to systems  
                              headers.  
  -fcheck-new                 检查 new 的返回值  
  -fcond-mismatch             允许‘?’运算符的参数有不同的类型  
  -fconserve-space            不起作用。为向前兼容保留的选项。  
  -fconst-string-class=<名字> 使用名字作为常量字符串类的名称  
  -fconstexpr-depth=  Specify maximum constexpr recursion depth  
  -fdebug-cpp                 Emit debug annotations during preprocessing  
  -fdeduce-init-list          enable deduction of std::initializer_list for a  
                              template type parameter from a brace-enclosed  
                              initializer-list  
  -fdefault-inline            不起作用。为向前兼容保留的选项。  
  -fdirectives-only           仅预处理指示。  
  -fdollars-in-identifiers    允许‘$’作为标识符的一部分  
  -fdump-ada-spec             Write all declarations as Ada code transitively  
  -fdump-ada-spec-slim        Write all declarations as Ada code for the given  
                              file only  
  -felide-constructors        此开关缺少可用文档  
  -femit-struct-debug-baseonly 积极地缩减结构体的调试信息  
  -femit-struct-debug-detailed=<规格列表> 详细指定如何缩减结构体的调试信息  
  -femit-struct-debug-reduced 保守地缩减结构体的调试信息  
  -fenforce-eh-specs          生成检查异常规范的代码  
  -fenum-int-equiv            此开关缺少可用文档  
  -fexec-charset=<字符集>  将所有字符串和字符常量转换到字符集  
  -fext-numeric-literals      Interpret imaginary, fixed-point, or other gnu  
                              number suffix as the corresponding number literal  
                              rather than a user-defined number literal.  
  -fextended-identifiers      允许标识符中出现 Unicode 字符名(\u 和  
                              \U)  
  -fextern-tls-init           Support dynamic initialization of thread-local  
                              variables in a different translation unit  
  -fexternal-templates        此开关缺少可用文档  
  -ffor-scope                 for  
                              循环初始化中定义的变量作用域局限于循环内  
  -ffreestanding              不假定标准 C 库和“main”存在  
  -ffriend-injection          将友元函数声明视作包含它的命名空间中的有效声明  
  -fgnu-keywords              识别 GNU 定义的关键字  
  -fgnu-runtime               为 GNU 运行时环境生成代码  
  -fgnu89-inline              为内联函数使用传统的 GNU 语义  
  -fguiding-decls             此开关缺少可用文档  
  -fhandle-exceptions         此开关缺少可用文档  
  -fhonor-std                 此开关缺少可用文档  
  -fhosted                    假定一般的 C 执行环境  
  -fhuge-objects              不再受支持  
  -fimplement-inlines         导出被内联的函数  
  -fimplicit-inline-templates 允许内联模板隐式实例化  
  -fimplicit-templates        允许模板隐式实例化  
  -finput-charset=<字符集> 指定源代码的默认字符集  
  -fkeep-inline-dllexport     除非必需,不生成 DLL 导出的内联函数  
  -flabels-ok                 此开关缺少可用文档  
  -flax-vector-conversions    允许具有不同元素数量和/或元素类型的向量间的转换  
  -fms-extensions             使用微软扩展时不给出警告  
  -fmudflap                   为单线程程序添加 mudflap 边界检查  
  -fmudflapir                 插入 mudflag 时忽略读操作  
  -fmudflapth                 为多线程程序添加 mudflap 边界检查  
  -fname-mangling-version-    此开关缺少可用文档  
  -fnew-abi                   此开关缺少可用文档  
  -fnext-runtime              为 NeXT (苹果 Mac OS X)  
                              运行时环境生成代码  
  -fnil-receivers             假定 Objective-C 消息的接受者可能是 nil  
  -fnonansi-builtins          此开关缺少可用文档  
  -fnonnull-objects           此开关缺少可用文档  
  -fnothrow-opt               Treat a throw() exception specification as  
                              noexcept to improve code size  
  -fobjc-abi-version=         Specify which ABI to use for Objective-C family  
                              code and meta-data generation.  
  -fobjc-direct-dispatch      允许快速跳转至消息分发者  
  -fobjc-exceptions           启用 Objective-C 异常和同步语法  
  -fobjc-gc                   在 Objective-C/Objective-C++  
                              程序中启用垃圾收集  
  -fobjc-nilcheck             Enable inline checks for nil receivers with the  
                              NeXT runtime and ABI version 2.  
  -fobjc-sjlj-exceptions      启用 Objective-C setjmp 异常处理运行时  
  -fobjc-std=objc1            Conform to the Objective-C 1.0 language as  
                              implemented in GCC 4.0  
  -fopenmp                    启用 OpenMP(对 Fortran 而言也同时设定  
                              -frecursive)  
  -foperator-names            识别“compl”、“xor”等 C++ 关键词  
  -foptional-diags            不起作用。为向前兼容保留的选项。  
  -fpch-deps                  此开关缺少可用文档  
  -fpch-preprocess            即使在预处理时也搜索并使用 PCH 文件  
  -fpermissive                将兼容性错误降格为警告  
  -fplan9-extensions          启用九号计划语言扩展  
  -fpreprocessed              将输入文件当作已经预处理过的  
  -fpretty-templates          -fno-pretty-templates  
                              不使用模板签名加实参的方式美化模板特例化的打印  
  -freplace-objc-classes      指定对象文件可能在运行时被换入以允许“修复并继续”调试模式  
  -frepo                      启用模板自动实例化  
  -frtti                      生成运行时类型描述信息  
  -fshort-double              令 double 使用 float 的大小  
  -fshort-enums               为枚举类型使用尽可能窄的整数类型  
  -fshort-wchar               强制指定“wchar_t”的内在类型为“unsigned  
                              short”  
  -fsigned-bitfields          没有给定“signed”或“unsigned”时将位段视作有符号的  
  -fsigned-char               使“char”类型默认为有符号  
  -fsquangle                  此开关缺少可用文档  
  -fstats                     显示编译过程中累计的统计数字  
  -fstrict-enums              Assume that values of enumeration type are always  
                              within the minimum range of that type  
  -fstrict-prototype          此开关缺少可用文档  
  -ftabstop=               指定报告列号时制表位间的距离  
  -ftemplate-backtrace-limit= Set the maximum number of template instantiation  
                              notes for a single warning or error  
  -ftemplate-depth-           此开关缺少可用文档  
  -ftemplate-depth=        指定模板实例化的最大深度  
  -fthis-is-variable          此开关缺少可用文档  
  -fno-threadsafe-statics     不为局部静态变量生成线程安全的初始化代码  
  -ftrack-macro-expansion     此开关缺少可用文档  
  -ftrack-macro-expansion=    -ftrack-macro-expansion=<0|1|2>  Track locations  
                              of tokens coming from macro expansion and display  
                              them in error messages  
  -funsigned-bitfields        未指定“signed”或“unsigned”时默认位段为无符号的  
  -funsigned-char             使“char”类型默认为无符号  
  -fuse-cxa-atexit            将 __cxa_atexit 而非 atexit  
                              登记为析构函数  
  -fuse-cxa-get-exception-ptr 在异常处理中使用 __cxa_get_exception_ptr  
  -fvisibility-inlines-hidden Marks all inlined functions and methods as having  
                              hidden visibility  
  -fvisibility-ms-compat      默认使用与 Microsoft Visual Studio  
                              匹配的可见性  
  -fvtable-gc                 不再受支持  
  -fvtable-thunks             不再受支持  
  -fweak                      将公共符号视作弱符号  
  -finput-charset=<字符集> 将所有宽字符串和字符常量都转换为字符集  
  -fworking-directory         生成一个指向当前工作目录的 #line  
                              预处理指令  
  -fxref                      不再受支持  
  -fzero-link                 为 Zero-Link 模式生成后期类查找(通过  
                              objc_getClass())  
  -gant                       Catch typos  
  -gen-decls                  将声明转储到一个 .decl 文件中  
  -gnat<选项>               指定给 GNAT 的选项  
  -gnatO                      Set name of output ALI file (internal switch)  
  -idirafter <目录>         将目录添加至系统包含路径末尾  
  -imacros <文件>           接受文件中定义的宏  
  -imultilib <目录>         将目录设定为 multilib 的包含子目录  
  -include <文件>           在包含其它文件之前先包含该文件的内容  
  -iprefix <路径>           将路径指定为下两个选项的前缀  
  -iquote <目录>            将目录添加至括起的包含路径末尾  
  -isysroot <目录>          将目录设为系统根目录  
  -isystem <目录>           将目录添加至系统包含路径开头  
  -iwithprefix <目录>       将目录添加至系统包含路径末尾  
  -iwithprefixbefore <目录> 将目录添加至主包含路径末尾  
  -nostdinc                   不搜索标准系统头文件目录(但仍将使用由  
                              -isystem 指定的目录)  
  -nostdinc++                 不搜索 C++ 标准系统头文件目录  
  -nostdlib                   Do not look for object files in standard path  
  -o <文件>                 将输出写入文件  
  -pedantic                   此开关缺少可用文档  
  -print-objc-runtime-info    生成有平台相关特性的 C 头文件  
  -remap                      包含文件时映射短文件名  
  -std=c++03                  Conform to the ISO 1998 C++ standard revised by  
                              the 2003 technical corrigendum  
  -std=c++0x                  Deprecated in favor of -std=c++11  
  -std=c++11                  Conform to the ISO 2011 C++ standard  
                              (experimental and incomplete support)  
  -std=c++1y                  Conform to the ISO 201y(7?) C++ draft standard  
                              (experimental and incomplete support)  
  -std=c++98                  Conform to the ISO 1998 C++ standard revised by  
                              the 2003 technical corrigendum  
  -std=c11                    Conform to the ISO 2011 C standard (experimental  
                              and incomplete support)  
  -std=c1x                    Deprecated in favor of -std=c11  
  -std=c89                    遵循 ISO 1990 C 标准  
  -std=c90                    遵循 ISO 1990 C 标准  
  -std=c99                    遵循 ISO 1999 C 标准  
  -std=c9x                    不建议使用,请改用 -std=c99  
  -std=gnu++03                Conform to the ISO 1998 C++ standard revised by  
                              the 2003 technical corrigendum with GNU extensions  
  -std=gnu++0x                Deprecated in favor of -std=gnu++11  
  -std=gnu++11                Conform to the ISO 2011 C++ standard with GNU  
                              extensions (experimental and incomplete support)  
  -std=gnu++1y                Conform to the ISO 201y(7?) C++ draft standard  
                              with GNU extensions (experimental and incomplete  
                              support)  
  -std=gnu++98                Conform to the ISO 1998 C++ standard revised by  
                              the 2003 technical corrigendum with GNU extensions  
  -std=gnu11                  Conform to the ISO 2011 C standard with GNU  
                              extensions (experimental and incomplete support)  
  -std=gnu1x                  Deprecated in favor of -std=gnu11  
  -std=gnu89                  遵循 ISO 1990 C 标准,也支持 GNU 扩展  
  -std=gnu90                  遵循 ISO 1990 C 标准,也支持 GNU 扩展  
  -std=gnu99                  遵循 ISO 1999 C 标准,也支持 GNU 扩展  
  -std=gnu9x                  不建议使用,请改用 -std=gnu99  
  -std=iso9899:1990           遵循 ISO 1990 C 标准  
  -std=iso9899:199409         遵循 ISO 1990 C 标准于 1994  
                              年修订的版本  
  -std=iso9899:1999           遵循 ISO 1999 C 标准  
  -std=iso9899:199x           不建议使用,为 -std=iso9899:1999 所取代  
  -std=iso9899:2011           Conform to the ISO 2011 C standard (experimental  
                              and incomplete support)  
  -traditional-cpp            启用传统预处理  
  -trigraphs                  支持 ISO C 三元符  
  -undef                      不预定义系统或 GCC 特定的宏  
  -v                          启用详细输出  
  -w                          不显示警告  

--param 选项可接受以下参数:  
  predictable-branch-outcome  被认为可以预测的分支的最大估算结果  
  inline-min-speedup          The minimal estimated speedup allowing inliner to  
                              ignore inline-insns-single and inline-isnsns-auto  
  max-inline-insns-single     单个可内联的函数体最多能包含的指令数  
  max-inline-insns-auto       自动内联时指令的最大数量  
  max-inline-insns-recursive  由于嵌套内联造成的内联函数代码膨胀的上限值(指令数)  
  max-inline-insns-recursive-auto 由于嵌套内联造成的非内联函数代码膨胀的上限值(指令数)  
  max-inline-recursive-depth  内联函数中嵌套内联的最大深度  
  max-inline-recursive-depth-auto 非内联函数中嵌套内联的最大深度  
  min-inline-recursive-probability 仅当被执行的调用的概率超过此参数时方进行递归地内联  
  max-early-inliner-iterations 早期内联器可以进行的嵌套间接内联的最大数量  
  comdat-sharing-probability  Probability that COMDAT function will be shared  
                              with different compilation unit  
  partial-inlining-entry-probability 进行部分内联时分离区域入口基本块占函数入口基本块的百分比概率的上限  
  max-variable-expansions-in-unroller 如果使用了 -fvariable-expansion-in-  
                              unroller,即指单个变量在循环展开时可以同时被展开的次数  
  min-vect-loop-bound         使用 -ftree-vectorize  
                              时考虑进行向量化的循环次数下限  
  max-delay-slot-insn-search  考虑填充入延迟槽中的最大指令数  
  max-delay-slot-live-search  用以发现准确的活动寄存器信息的最大指令数量  
  max-pending-list-length     调度候选操作列表的最大长度  
  max-modulo-backtrack-attempts The maximum number of backtrack attempts the  
                              scheduler should make when modulo scheduling a  
                              loop  
  large-function-insns        超过这个大小的函数体被认为是大的  
  large-function-growth       内联大函数造成的代码膨胀的上限(以百分数的形式给出)  
  large-unit-insns            超过这个大小的翻译单元被认为是大的  
  inline-unit-growth          给定的编译单元因内联造成的体积膨胀上限(以百分数表示)  
  ipcp-unit-growth            给定的编译单元因跨进程常量传递造成的编译单元体积膨胀上限(以百分数表示)  
  early-inlining-insns        对单个调用进行的早期内联所导致的函数体代码膨胀的最大估计值  
  large-stack-frame           超过这个大小的栈帧被认为是大的  
  large-stack-frame-growth    内联造成的栈帧膨胀的上限(以百分数的形式给出)  
  max-gcse-memory             GCSE 可分配的最大内存量  
  max-gcse-insertion-ratio    The maximum ratio of insertions to deletions of  
                              expressions in GCSE  
  gcse-after-reload-partial-fraction 重新载入后进行部分冗余消除的比例阈值  
  gcse-after-reload-critical-fraction 重新载入后允许进行冗余消除的关键边执行次数的比例阈值  
  gcse-cost-distance-ratio    计算一个表达式被 GCSE  
                              优化移动的最大距离时的比例因子  
  gcse-unrestricted-cost      指定 GCSE  
                              优化不约束一个表达式能被移动的距离时的代价  
  max-hoist-depth             Maximum depth of search in the dominator tree for  
                              expressions to hoist  
  max-unrolled-insns          单个循环中考虑展开的最大指令数  
  max-average-unrolled-insns  单个循环中考虑展开的平均最大指令数  
  max-unroll-times            单个循环最多可以被展开的次数  
  max-peeled-insns            剥离后的循环所能有的最大指令数  
  max-peel-times              单个循环最大的剥离数  
  max-peel-branches           The maximum number of branches on the path  
                              through the peeled sequence  
  max-completely-peeled-insns 一个完全剥离的循环所能有的最大指令数  
  max-completely-peel-times   一个完全剥离的单个循环最大的剥离数  
  max-once-peeled-insns       被剥离后只卷绕一次的循环包含的最多指令数  
  max-completely-peel-loop-nest-depth 一个完全剥离的循环嵌套所能有的最大深度  
  max-unswitch-insns          去开关后的循环所能有的最大指令数  
  max-unswitch-level          单个循环中考虑去开关的最大指令数  
  max-iterations-to-track     暴力迭代次数分析算法评估迭代次数的上限  
  max-iterations-computation-cost 用于计算迭代次数的表达式的开销的上限值  
  sms-max-ii-factor           调整摆动模调度器调度循环时使用的上限的一个因素  
  sms-min-sc                  The minimum value of stage count that swing  
                              modulo scheduler will generate.  
  sms-dfa-history             使用 DFA  
                              检查冲突时摆动模调度器考虑的周期数  
  sms-loop-average-count-threshold 由摆动模调度程序考虑的关于平均循环计数的阈值  
  hot-bb-count-ws-permille    A basic block profile count is considered hot if  
                              it contributes to the given permillage of the  
                              entire profiled execution  
  hot-bb-frequency-fraction   当某基本块执行频率超过函数中基本块执行的最大频率的指定百分比时,该基本块可被考虑为热点代码  
  align-threshold             当某基本块执行频率超过函数中基本块执行的最大频率的指定百分比时,该基本块将被对齐  
  align-loop-iterations       对齐循环次数大于或等于设定值的循环  
  max-predicted-iterations    静态预测时的最多循环次数  
  tracer-dynamic-coverage-feedback 必须被踪迹形成所覆盖的函数百分比,以执行频率加权。当取样反馈可用时使用  
  tracer-dynamic-coverage     必须被踪迹形成所覆盖的函数百分比,以执行频率加权。当取样反馈不可用时使用  
  tracer-max-code-growth      以百分比表示的尾复制所引起的最大代码膨胀  
  tracer-min-branch-ratio     当最优边的反向概率小于此阈值(以百分数表示)时停止反向增长  
  tracer-min-branch-probability-feedback 当最优边的概率小于此限值(以百分数表示)时,停止前向增长。当取样反馈可用时使用。  
  tracer-min-branch-probability 当最优边的概率小于此限值(以百分数表示)时,停止前向增长。当取样反馈不可用时使用。  
  max-crossjump-edges         考虑进行交叉跳转的最大入边数量  
  min-crossjump-insns         考虑进行交叉跳转的最小匹配指令数量  
  max-grow-copy-bb-insns      复制基本块时最大的展开因子  
  max-goto-duplication-insns  分解计算转移时复制指令的数量上限  
  max-cse-path-length         公因式消去时考虑的最大路径长度  
  max-cse-insns               清空前公因式消去处理的最大指令数  
  lim-expensive               循环不变量转移时一条昂贵的表达式的最小开销  
  iv-consider-all-candidates-bound 当备选少于此设定值时所有备选都将为归纳变量优化所考虑  
  iv-max-considered-uses      对归纳变量数少于设定值的循环进行归纳变量优化  
  iv-always-prune-cand-set-bound 当备选归纳变量少于设定值时总是设法在优化过程中消除未使用的归纳变量  
  scev-max-expr-size          用在标量演化分析器中的表达式的大小上限  
  scev-max-expr-complexity    Bound on the complexity of the expressions in the  
                              scalar evolutions analyzer  
  omega-max-vars              Omega 约束系统中变量数的上限  
  omega-max-geqs              Omega 约束系统中不等式数量的上限  
  omega-max-eqs               Omega 约束系统中等式数量的上限  
  omega-max-wild-cards        Omega 约束系统中通配符数量的上限  
  omega-hash-table-size       Omega 约束系统中散列表大小的上限  
  omega-max-keys              Omega 约束系统中  
  omega-eliminate-redundant-constraints 设为 1  
                              时,使用昂贵的方法来消除所有冗余的约束  
  vect-max-version-for-alignment-checks 向量循环版本化插入的运行时对齐检查次数的上限  
  vect-max-version-for-alias-checks 向量循环版本化插入的运行时别名检查次数的上限  
  max-cselib-memory-locations cselib 最多记录的内存位置  
  ggc-min-expand              引发垃圾收集的堆展开的最小值,以占堆总大小的百分比给出  
  ggc-min-heapsize            开始垃圾回收时最小的堆大小,以千字节表示  
  max-reload-search-insns     后向搜索以寻找等价重载入时要搜索的最大指令数量  
  sink-frequency-threshold    Target block's relative execution frequency (as a  
                              percentage) required to sink a statement  
  max-sched-region-blocks     一个区域中考虑进行块间调度的最大块数  
  max-sched-region-insns      一个区域中考虑进行块间调度的最大指令数  
  max-pipeline-region-blocks  一个区域中考虑进行块间调度的最大块数  
  max-pipeline-region-insns   一个区域中考虑进行块间调度的最大指令数  
  min-spec-prob               块间投机调度时到达一个源块的最小概率  
  max-sched-extend-regions-iters 通过 CFG 以扩展区域的最大循环次数  
  max-sched-insn-conflict-delay 考虑进行投机移动的指令的最大冲突延迟数  
  sched-spec-prob-cutoff      以百分比表示的投机成功的最小概率,影响对投机指令的调度  
  sched-state-edge-prob-cutoff The minimum probability an edge must have for  
                              the scheduler to save its state across it.  
  selsched-max-lookahead      进行选择调度时前瞻窗口的最大尺寸  
  selsched-max-sched-times    指定一条指令最多能被调度几次  
  selsched-insns-to-rename    在适合行重命名的就绪列表中最多的指令数  
  sched-mem-true-dep-cost     可能冲突的存储和装载之间的最小距离  
  max-last-value-rtl          可以被记作组合器的最终值的最大 RTL  
                              节点数  
  integer-share-limit         共享整型常量的上界  
  ssp-buffer-size             考虑预防堆栈溢出的缓冲区的下限值  
  max-jump-thread-duplication-stmts 线索化跳转时一个以被复制的块中所能包含的最大语句数  
  max-fields-for-field-sensitive 在指针分析将该结构视为单一变量前结构包含的最大字段数  
  max-sched-ready-insns       首趟调度考虑准备生成的指令的最大数量  
  max-dse-active-local-stores Maximum number of active local stores in RTL dead  
                              store elimination  
  prefetch-latency            预取操作完成前执行指令的数目  
  simultaneous-prefetches     可以同时运行的预取操作数目  
  l1-cache-size               一级缓存大小  
  l1-cache-line-size          一级缓存列长度  
  l2-cache-size               二级缓存大小  
  use-canonical-types         是否使用合乎规范的类型  
  max-partial-antic-length    进行树上部分冗余消除时部分可预期集的最大长度  
  sccvn-max-scc-size          在 SCCVN 停止处理一个函数以前 SCC  
                              的最大尺寸  
  sccvn-max-alias-queries-per-access Maximum number of disambiguations to  
                              perform per memory access  
  ira-max-loops-num           用作区域寄存器分配的最大循环数  
  ira-max-conflict-table-size 以 MB 表示的冲突表大小上限  
  ira-loop-reserved-regs      保留不为循环不变量转移使用的各种寄存器的数量  
  switch-conversion-max-branch-ratio 当数组大小与开关分支的比率大于此值时开关转换不会发生  
  loop-block-tile-size        循环分块中每小块的大小  
  graphite-max-nb-scop-params 一个静态控制部分(ScoP)中参数的最大数量  
  graphite-max-bbs-per-function Graphite  
                              可分析的每函数所包含的基本块数量上限  
  loop-max-datarefs-for-datadeps Maximum number of datarefs in loop for  
                              building loop data dependencies  
  loop-invariant-max-bbs-in-loop 用作循环不变量转移的循环中基本块的最大数量  
  slp-max-insns-in-bb         考虑进行基本块向量化的基本块能包含的指令数上限  
  min-insn-to-prefetch-ratio  为有未知路程计数的循环启用预取时最小的指令/预取比  
  prefetch-min-insn-to-mem-ratio 为循环启用预取时最小的指令/内存操作比  
  max-vartrack-size           变量跟踪散列表的最大尺寸  
  max-vartrack-expr-depth     Max. recursion depth for expanding var tracking  
                              expressions  
  max-vartrack-reverse-op-size Max. size of loc list for which reverse ops  
                              should be added  
  min-nondebug-insn-uid       非调试指令所使用的最小 UID  
  ipa-sra-ptr-growth-factor   IPA-SRA  
                              考虑将指向的聚合的指针替换为参数时这些参数总和大小相对原指针参数大小倍数的最大值  
  tm-max-aggregate-size       Size in bytes after which thread-local aggregates  
                              should be instrumented with the logging functions  
                              instead of save/restore pairs  
  ipa-cp-value-list-size      Maximum size of a list of values associated with  
                              each parameter for interprocedural constant  
                              propagation  
  ipa-cp-eval-threshold       Threshold ipa-cp opportunity evaluation that is  
                              still considered beneficial to clone.  
  ipa-max-agg-items           Maximum number of aggregate content items for a  
                              parameter in jump functions and lattices  
  ipa-cp-loop-hint-bonus      Compile-time bonus IPA-CP assigns to candidates  
                              which make loop bounds or strides known.  
  lto-partitions              Number of partitions the program should be split  
                              to  
  lto-min-partition           Minimal size of a partition for LTO (in estimated  
                              instructions)  
  cxx-max-namespaces-for-diagnostic-help Maximum number of namespaces to search  
                              for alternatives when name lookup fails  
  max-stores-to-sink          Maximum number of conditional store pairs that  
                              can be sunk  
  case-values-threshold       The smallest number of different values for which  
                              it is best to use a jump-table instead of a tree  
                              of conditional branches, if 0, use the default  
                              for the machine  
  allow-load-data-races       Allow new data races on loads to be introduced  
  allow-store-data-races      Allow new data races on stores to be introduced  
  allow-packed-load-data-races Allow new data races on packed data loads to be  
                              introduced  
  allow-packed-store-data-races Allow new data races on packed data stores to  
                              be introduced  
  tree-reassoc-width          Set the maximum number of instructions executed  
                              in parallel in reassociated tree. If 0, use the  
                              target dependent heuristic.  
  max-tail-merge-comparisons  Maximum amount of similar bbs to compare a bb with  
  max-tail-merge-iterations   Maximum amount of iterations of the pass over a  
                              function  
  max-tracked-strlens         Maximum number of strings for which strlen  
                              optimization pass will track string lengths  
  sched-pressure-algorithm    Which -fsched-pressure algorithm to apply  
  max-slsr-cand-scan          Maximum length of candidate scans for straight-  
                              line strength reduction  

下列选项控制编译器警告信息:  
  --extra-warnings            此开关缺少可用文档  
  -W                          不建议使用此开关;请改用 -Wextra  
  -Waggregate-return          当返回结构、联合或数组时给出警告  
  -Waggressive-loop-optimizations Warn if a loop with constant number of  
                              iterations triggers undefined behavior  
  -Warray-bounds              当数组访问越界时给出警告  
  -Wattributes                当对属性的使用不合适时给出警告  
  -Wcast-align                当转换指针类型导致对齐边界增长时给出警告  
  -Wcoverage-mismatch         Warn in case profiles in -fprofile-use do not  
                              match  
  -Wcpp                       Warn when a #warning directive is encountered  
  -Wdeprecated-declarations   对 __attribute__((deprecated)) 声明给出警告  
  -Wdisabled-optimization     当某趟优化被禁用时给出警告  
  -Wfree-nonheap-object       Warn when attempting to free a non-heap object  
  -Winline                    当内联函数无法被内联时给出警告  
  -Winvalid-memory-model      Warn when an atomic memory model parameter is  
                              known to be outside the valid range.  
  -Wlarger-than-              此开关缺少可用文档  
  -Wlarger-than=           当目标文件大于 N 字节时给出警告  
  -Woverflow                  算术表示式溢出时给出警告  
  -Wpacked                    当 packed  
                              属性对结构布局不起作用时给出警告  
  -Wpadded                    当需要填补才能对齐结构成员时给出警告  
  -Wshadow                    当一个局部变量掩盖了另一个局部变量时给出警告  
  -Wstack-protector           当因为某种原因堆栈保护失效时给出警告  
  -Wstack-usage=              Warn if stack usage might be larger than  
                              specified amount  
  -Wstrict-aliasing           当代码可能破坏强重叠规则时给出警告  
  -Wstrict-overflow           禁用假定有符号数溢出行为未被定义的优化  
  -Wsuggest-attribute=const   Warn about functions which might be candidates  
                              for __attribute__((const))  
  -Wsuggest-attribute=noreturn 当函数可能是 __attribute__((noreturn))  
                              的备选时给出警告  
  -Wsuggest-attribute=pure    Warn about functions which might be candidates  
                              for __attribute__((pure))  
  -Wtrampolines               Warn whenever a trampoline is generated  
  -Wtype-limits               当由于数据类型范围限制比较结果永远为真或假时给出警告  
  -Wunsafe-loop-optimizations 当循环因为不平凡的假定而不能被优化时给出警告  
  -Wunused-but-set-parameter  Warn when a function parameter is only set,  
                              otherwise unused  
  -Wunused-but-set-variable   Warn when a variable is only set, otherwise unused  
  -Wunused-function           有未使用的函数时警告  
  -Wunused-parameter          发现未使用的函数指针时给出警告  
  -Wunused-value              当一个表达式的值未被使用时给出警告  
  -Wunused-variable           有未使用的变量时警告  
  -Wvector-operation-performance Warn when a vector operation is compiled  
                              outside the SIMD  

下列选项控制优化:  
  -O                       将优化等级设为 N  
  -Ofast                      为速度优化,不严格遵守标准  
  -Og                         Optimize for debugging experience rather than  
                              speed or size  
  -Os                         为最小空间而不是最大速度优化  
  -faggressive-loop-optimizations Aggressively optimize loops using language  
                              constraints  
  -falign-functions           对齐函数入口  
  -falign-jumps               对齐只能为跳转所到达的标号  
  -falign-labels              对齐所有的标号  
  -falign-loops               对齐循环入口  
  -fasynchronous-unwind-tables 生成精确到每条指令边界的堆栈展开表  
  -fbranch-count-reg          将加/减法、比较、跳转指令序列替换为根据计数寄存器跳转指令  
  -fbranch-probabilities      为分支概率使用取样信息  
  -fbranch-target-load-optimize 在开始/结末线程前进行分支目标载入优化  
  -fbranch-target-load-optimize2 在开始/结末线程后进行分支目标载入优化  
  -fbtr-bb-exclusive          限制目标载入融合不重用任何基本块中的寄存器  
  -fcaller-saves              函数调用前后保存/恢复寄存器值  
  -fcombine-stack-adjustments Looks for opportunities to reduce stack  
                              adjustments and stack references.  
  -fcommon                    不将未初始化的全局数据放在公共节中  
  -fcompare-elim              Perform comparison elimination after register  
                              allocation has finished  
  -fconserve-stack            不进行可能导致堆栈使用明显增长的优化  
  -fcprop-registers           进行一趟寄存器副本传递优化  
  -fcrossjumping              进行跨跳转优化  
  -fcse-follow-jumps          进行 CSE 时,跟随跳转至目标  
  -fcx-fortran-rules          复数乘除遵循 Fortran 规则  
  -fcx-limited-range          当进行复数除法时省略缩减范围的步骤  
  -fdata-sections             将每个数据项分别放在它们各自的节中  
  -fdce                       使用 RTL 死代码清除  
  -fdefer-pop                 延迟将函数实参弹栈  
  -fdelayed-branch            尝试填充分支指令的延迟槽  
  -fdelete-null-pointer-checks 删除无用的空指针检查  
  -fdevirtualize              Try to convert virtual calls to direct ones.  
  -fdse                       使用 RTL 死存储清除  
  -fearly-inlining            进行早内联  
  -fexceptions                启用异常处理  
  -fexpensive-optimizations   进行一些细微的、代价高昂的优化  
  -ffinite-math-only          假定结果不会是 NaN 或无穷大浮点数  
  -ffloat-store               不将单精度和双精度浮点数分配到扩展精度的寄存器中  
  -fforward-propagate         进行 RTL 上的前向传递  
  -fgcse                      进行全局公共子表达式消除  
  -fgcse-after-reload         Perform global common subexpression elimination  
                              after register allocation has finished  
  -fgcse-las                  Perform redundant load after store elimination in  
                              global common subexpression elimination  
  -fgcse-lm                   在全局公共子表达式消除中进行增强的读转移优化  
  -fgcse-sm                   在全局公共子表达式消除后进行存储转移  
  -fgraphite-identity         启用 Graphite 身份转换  
  -fguess-branch-probability  启用分支概率猜测  
  -fhoist-adjacent-loads      Enable hoisting adjacent loads to encourage  
                              generating conditional move instructions  
  -fif-conversion             将条件跳转替换为没有跳转的等值表示  
  -fif-conversion2            将条件跳转替换为条件执行  
  -finline                    Enable inlining of function declared "inline",  
                              disabling disables all inlining  
  -finline-atomics            Inline __atomic operations when a lock free  
                              instruction sequence is available.  
  -finline-functions-called-once Integrate functions only required by their  
                              single caller  
  -finline-small-functions    Integrate functions into their callers when code  
                              size is known not to grow  
  -fipa-cp                    进行进程间的复写传递  
  -fipa-cp-clone              进行复制以使跨进程常量传递更有效  
  -fipa-profile               Perform interprocedural profile propagation  
  -fipa-pta                   进行进程间的指向分析  
  -fipa-pure-const            发现纯函数和常函数  
  -fipa-reference             发现只读和不可寻址静态变量  
  -fipa-sra                   为聚合类型进行跨进程标量替换  
  -fira-hoist-pressure        Use IRA based register pressure calculation in  
                              RTL hoist optimizations.  
  -fivopts                    在树上优化归纳变量  
  -fjump-tables               为足够大的 switch 语句使用跳转表  
  -floop-block                启用循环分块转换  
  -floop-interchange          启用循环交换转换  
  -floop-nest-optimize        Enable the ISL based loop nest optimizer  
  -floop-parallelize-all      将所有循环标记为并行  
  -floop-strip-mine           启用循环条带开采转换  
  -fmath-errno                执行内建数学函数后设置 errno  
  -fmerge-all-constants       试图合并相同的常量和常变量  
  -fmerge-constants           试图合并不同编译单元中的相同常量  
  -fmodulo-sched              在首趟调度前进行基于 SMS 的模调度  
  -fmove-loop-invariants      将每次循环中不变的计算外提  
  -fnon-call-exceptions       支持同步非调用异常  
  -fomit-frame-pointer        尽可能不生成栈帧  
  -fopt-info                  Enable all optimization info dumps on stderr  
  -foptimize-register-move    进行全寄存器传送优化  
  -foptimize-sibling-calls    优化同级递归和尾递归  
  -foptimize-strlen           Enable string length optimizations on trees  
  -fpack-struct               将结构成员不带间隔地紧实存放  
  -fpack-struct=           设定结构成员最大对齐边界的初始值  
  -fpeel-loops                进行循环剥离  
  -fpeephole                  启用机器相关的窥孔优化  
  -fpeephole2                 在 sched2 前进行一趟 RTL 窥孔优化  
  -fpredictive-commoning      启用预测公因子优化。  
  -fprefetch-loop-arrays      如果可用,为循环中的数组生成预取指令  
  -freg-struct-return         在寄存器中返回小聚合  
  -fregmove                   启用寄存器传送优化  
  -frename-registers          进行寄存器重命名优化  
  -freorder-blocks            基本块重新排序以改善代码布局  
  -freorder-blocks-and-partition 对基本块重新排序并划分为热区和冷区  
  -freorder-functions         函数重新排序以改善代码布局  
  -frerun-cse-after-loop      在循环优化结束后增加一趟公共子表达式消除  
  -freschedule-modulo-scheduled-loops 启用/禁用已经通过模调度的循环中的传统调度  
  -frounding-math             禁用假定默认浮点舍入行为的优化  
  -fsched-critical-path-heuristic 为调度器启用关键路径启发式发现  
  -fsched-dep-count-heuristic 为调度器启用依赖计数启发式发现  
  -fsched-group-heuristic     在调度器中启用组启发  
  -fsched-interblock          启用基本块间的调度  
  -fsched-last-insn-heuristic 为调度器启用最近指令启发式发现  
  -fsched-pressure            启用对寄存器压力敏感的指令调度  
  -fsched-rank-heuristic      在调度器中启用秩启发  
  -fsched-spec                允许非载入的投机移动  
  -fsched-spec-insn-heuristic 为调度器启用投机指令启发式发现  
  -fsched-spec-load           允许一些载入的投机移动  
  -fsched-spec-load-dangerous 允许更多载入的投机移动  
  -fsched-stalled-insns       允许对队列中的指令进行早调度  
  -fsched-stalled-insns-dep   设置排队中指令的进行早调度的依赖距离检查  
  -fsched2-use-superblocks    在重载后调度中使用跨基本块调度  
  -fschedule-insns            分配寄存器前重新调度指令  
  -fschedule-insns2           分配寄存器后重新调度指令  
  -fsection-anchors           从共享的锚点访问在同样的节中的数据  
  -fsel-sched-pipelining      在选择性调度中对内层循环进行软件流水化  
  -fsel-sched-pipelining-outer-loops 在选择性调度中对外层循环进行软件流水化  
  -fsel-sched-reschedule-pipelined 重新调度没有被流水线化的流水线区域  
  -fselective-scheduling      用选择性调度算法调度指令  
  -fselective-scheduling2     在重加载后使用选择性调度  
  -fset-stack-executable      为嵌套函数设定可执行堆栈权限。  
  -fshrink-wrap               Emit function prologues only before parts of the  
                              function that need it, rather than at the top of  
                              the function.  
  -fsignaling-nans            禁用为 IEEE NaN 可见的优化  
  -fsigned-zeros              禁用忽略 IEEE 中零的符号的浮点优化  
  -fsingle-precision-constant 将浮点常量转换为单精度常量  
  -fsplit-ivs-in-unroller     展开循环时分离归纳变量的生存期  
  -fsplit-wide-types          将宽类型分割到独立的寄存器中  
  -fstrict-aliasing           假定应用强重叠规则  
  -fthread-jumps              进行跳转线程优化  
  -ftoplevel-reorder          重新排序文件作用域的函数、变量和汇编  
  -ftrapping-math             假定浮点运算可能引发陷阱  
  -ftrapv                     加法、减法或乘法溢出时激活陷阱  
  -ftree-bit-ccp              Enable SSA-BIT-CCP optimization on trees  
  -ftree-builtin-call-dce     为内建函数启用有条件的死代码消除优化  
  -ftree-ccp                  启用树上的 SSA-CCP 优化  
  -ftree-ch                   启用树上的循环不变量转移  
  -ftree-coalesce-inlined-vars Enable coalescing of copy-related user variables  
                              that are inlined  
  -ftree-coalesce-vars        Enable coalescing of all copy-related user  
                              variables  
  -ftree-copy-prop            在树级别进行复写传递  
  -ftree-copyrename           将 SSA  
                              临时变量重命名为更易理解的名称  
  -ftree-cselim               将条件存储转换为非条件存储  
  -ftree-dce                  启用树上的 SSA 死代码消除优化  
  -ftree-dominator-opts       启用主导优化  
  -ftree-dse                  删除死存储  
  -ftree-forwprop             在树级别进行前向复写传递  
  -ftree-fre                  启用树上的完全冗余消除(FRE)  
  -ftree-loop-distribute-patterns Enable loop distribution for patterns  
                              transformed into a library call  
  -ftree-loop-distribution    在树上进行循环分配  
  -ftree-loop-if-convert      Convert conditional jumps in innermost loops to  
                              branchless equivalents  
  -ftree-loop-if-convert-stores 将包含内存写入的条件跳转转换为不带分支的等效形式  
  -ftree-loop-im              启用树上的循环不变量转移  
  -ftree-loop-ivcanon         在循环中生成正规的归纳变量  
  -ftree-loop-optimize        在树级别进行循环优化  
  -ftree-lrs                  在 SSA->normal 过程中分离活动范围  
  -ftree-partial-pre          In SSA-PRE optimization on trees, enable partial-  
                              partial redundancy elimination  
  -ftree-phiprop              为条件指针外提内存读取操作。  
  -ftree-pre                  启用树上的 SSA-PRE 优化  
  -ftree-pta                  在树上进行函数内的指向分析。  
  -ftree-reassoc              在树级别进行重结合  
  -ftree-scev-cprop           为标量演化信息进行复写传递。  
  -ftree-sink                 启用树上的 SSA 代码下沉优化  
  -ftree-slp-vectorize        在树上进行基本块向量化(SLP)  
  -ftree-slsr                 Perform straight-line strength reduction  
  -ftree-sra                  为聚合类型进行标量替换  
  -ftree-switch-conversion    转换开关初始化  
  -ftree-tail-merge           Enable tail merging on trees  
  -ftree-ter                  在 SSA->normal 过程中替换临时表达式  
  -ftree-vect-loop-version    在树上进行循环向量化时启用多版本循环  
  -ftree-vectorize            在树上进行循环向量化  
  -ftree-vrp                  进行树上的值域传递  
  -funit-at-a-time            一次编译一整个编译单元  
  -funroll-all-loops          展开所有循环  
  -funroll-loops              展开所有迭代次数已知的循环  
  -funsafe-loop-optimizations 允许假定循环以“正常”方式动作的循环优化  
  -funsafe-math-optimizations 允许可能违反 IEEE 或 ISO 标准的优化  
  -funswitch-loops            外提循环内的测试语句  
  -funwind-tables             仅为异常处理生成堆栈展开表  
  -fvar-tracking              进行变量跟踪  
  -fvar-tracking-assignments  评注赋值以进行变量跟踪  
  -fvar-tracking-assignments-toggle 切换 -fvar-tracking-assignments  
  -fvar-tracking-uninit       进行变量追踪并且标记未被初始化的变量  
  -fvariable-expansion-in-unroller 展开循环时也展开变量  
  -fvect-cost-model           启用向量化开销模型  
  -fvpt                       在优化中使用表达式值样本提供的信息  
  -fweb                       建立关系网并且分离对同一变量的无关应用  
  -fwhole-program             进行全程序优化  
  -fwrapv                     假定有符号运算溢出时回绕  

下列选项与特定目标机相关:  
  -m128bit-long-double        sizeof(long double) 等于 16  
  -m32                        生成 32 位 i386 代码  
  -m3dnow                     支持 3DNow! 内建函数  
  -m3dnowa                    支持扩展 3DNow! 内建函数  
  -m64                        生成 64 位 x86-64 代码  
  -m80387                     使用硬件浮点单元  
  -m8bit-idiv                 将 32/64  
                              位整数除法扩展为带运行时检查的 8  
                              位无符号整数除法  
  -m96bit-long-double         sizeof(long double) 等于 12  
  -mabi=                      生成遵循给定 ABI 的代码  
  -mabm                       支持生成高级位操作(ABM)指令。  
  -maccumulate-outgoing-args  在函数序言中为输出参数预留空间  
  -maddress-mode=             Use given address mode  
  -madx                       Support flag-preserving add-carry instructions  
  -maes                       支持 AES 内建函数及代码生成  
  -malign-double              一些双精度浮点数在双字边界上对齐  
  -malign-functions=          函数入口对齐在 2 的此次方上  
  -malign-jumps=              跳转目标对齐在 2 的此次方上  
  -malign-loops=              循环代码对齐到 2 的此次方上  
  -malign-stringops           对齐字符串操作的目标  
  -march=                     为给定的 CPU 生成代码  
  -masm=                      使用给定的汇编风格  
  -mavx                       支持  
                              MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2  
                              和 AVX 内建函数及代码生成  
  -mavx2                      Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,  
                              SSE4.2, AVX and AVX2 built-in functions and code  
                              generation  
  -mavx256-split-unaligned-load Split 32-byte AVX unaligned load  
  -mavx256-split-unaligned-store Split 32-byte AVX unaligned store  
  -mbmi                       支持 BMI 内建函数及代码生成  
  -mbmi2                      Support BMI2 built-in functions and code  
                              generation  
  -mbranch-cost=              指定分支的代价(1-5,任意单位)  
  -mcld                       在函数序言中生成 cld 指令  
  -mcmodel=                   使用给定的 x86-64 代码模式  
  -mconsole                   创建命令行程序  
  -mcpu=                      此开关缺少可用文档  
  -mcrc32                     支持生成 crc32 指令。  
  -mcx16                      支持生成 cmpxchg16b 指令。  
  -mdispatch-scheduler        Do dispatch scheduling if processor is bdver1 or  
                              bdver2 or bdver3 and Haifa scheduling is selected.  
  -mdll                       生成动态链接库的代码  
  -mf16c                      支持 F16C 内建函数及代码生成  
  -mfancy-math-387            为 FPU 生成 sin、cos 和 sqrt 指令  
  -mfentry                    Emit profiling counter call at function entry  
                              before prologue.  
  -mfma                       支持  
                              MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX  
                              和 FMA 内建函数及代码生成  
  -mfma4                      支持 FMA4 内建函数及代码生成  
  -mforce-drap                总是使用动态对齐参数指针(DRAP)来重新对齐堆栈  
  -mfp-ret-in-387             在 FPU 寄存器中存放函数返回值  
  -mfpmath=                   为指定的指令集生成浮点数学代码  
  -mfsgsbase                  支持 FSGSBASE 内建函数及代码生成  
  -mfused-madd                此开关缺少可用文档  
  -mfxsr                      Support FXSAVE and FXRSTOR instructions  
  -mhard-float                使用硬件浮点单元  
  -mhle                       Support Hardware Lock Elision prefixes  
  -mieee-fp                   浮点数间的比较严格遵循 IEEE 标准  
  -mincoming-stack-boundary=  假定栈对齐到 2 的此次方上  
  -minline-all-stringops      内联所有已知的字符串操作  
  -minline-stringops-dynamically 内联 memset/memcpy  
                              字符串操作,但仅为较小的块使用内联版本  
  -mintel-syntax              此开关缺少可用文档  
  -mlarge-data-threshold=     在 x86-64  
                              中等模式下大于指定阈值的数据将被存放在  
                              .ldata 节中  
  -mlong-double-64            使用 64 位 long double  
  -mlong-double-80            Use 80-bit long double  
  -mlwp                       支持 LWP 内建函数及代码生成  
  -mlzcnt                     Support LZCNT built-in function and code  
                              generation  
  -mmmx                       支持 MMX 内建函数  
  -mmovbe                     支持生成 movbe 指令。  
  -mms-bitfields              使用本地 (MS) 位段存储方式  
  -mno-align-stringops        此开关缺少可用文档  
  -mno-fancy-math-387         此开关缺少可用文档  
  -mno-push-args              此开关缺少可用文档  
  -mno-red-zone               此开关缺少可用文档  
  -mno-sse4                   不支持 SSE4.1 和 SSE4.2  
                              内建函数及代码生成  
  -mnop-fun-dllimport         忽略函数的 dllimport 属性  
  -momit-leaf-frame-pointer   为叶函数(不调用其他函数的函数)忽略框架指针  
  -mpc32                      Set 80387 floating-point precision to 32-bit  
  -mpc64                      Set 80387 floating-point precision to 64-bit  
  -mpc80                      Set 80387 floating-point precision to 80-bit  
  -mpclmul                    支持 PCLMUL 内建函数及代码生成  
  -mpe-aligned-commons        使用 PE 格式的 GNU 扩展来对齐 common  
                              数据  
  -mpopcnt                    支持生成 popcnt 指令。  
  -mprefer-avx128             自动向量化时使用 128 位 AVX  
                              指令而不是 256 位 AVX 指令  
  -mpreferred-stack-boundary= 试图让栈保持对齐到 2 的此次方上  
  -mprfchw                    Support PREFETCHW instruction  
  -mpush-args                 使用 push 指令保存输出参数  
  -mrdrnd                     支持 RDRND 内建函数及代码生成  
  -mrdseed                    Support RDSEED instruction  
  -mrecip                     生成倒数指令而不是 divss 和 sqrtss。  
  -mrecip=                    Control generation of reciprocal estimates.  
  -mred-zone                  在 x86-64 代码中使用红区  
  -mregparm=                  用以传递整数参数的寄存器个数  
  -mrtd                       更改调用约定  
  -mrtm                       Support RTM built-in functions and code generation  
  -msahf                      支持在 x86-64 模式下生成 sahf 指令。  
  -msoft-float                不使用硬件浮点单元  
  -msse                       支持 MMX 和 SSE 内建函数及代码生成  
  -msse2                      支持 MMX、SSE 和 SSE2  
                              内建函数及代码生成  
  -msse2avx                   支持带 VEX 前缀的 SSE 指令  
  -msse3                      支持 MMX、SSE、SSE2 和 SSE3  
                              内建函数及代码生成  
  -msse4                      支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1  
                              和 SSE4.2 内建函数及代码生成  
  -msse4.1                    支持 MMX、SSE、SSE2、SSE3、SSSE3 和 SSE4.1  
                              内建函数及代码生成  
  -msse4.2                    支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1  
                              和 SSE4.2 内建函数及代码生成  
  -msse4a                     支持 MMX、SSE、SSE2、SSE3 和 SSE4A  
                              内建函数及代码生成  
  -msse5                      此开关缺少可用文档  
  -msseregparm                在 SF 和 DF 模式下使用 SSE  
                              寄存器调用约定  
  -mssse3                     支持 MMX、SSE、SSE2、SSE3 和 SSSE3  
                              内建函数及代码生成  
  -mstack-arg-probe           启用堆栈探测  
  -mstackrealign              在前言中重新对齐堆栈  
  -mstringop-strategy=        选择生成字符串操作的策略  
  -mtbm                       支持 TBM 内建函数及代码生成  
  -mthreads                   使用 Mingw 特定的线程支持  
  -mtls-dialect=              使用给定的线程局部存储模式  
  -mtls-direct-seg-refs       当访问线程局部数据时直接引用 %gs  
  -mtune=                     为指定的 CPU 优化代码  
  -muse-libstdc-wrappers      生成依赖 Cygwin DLL  
                              包装的代码以支持对 C++ 运算符 new/  
                              delete 的替换  
  -mveclibabi=                指定要使用的向量库 ABI  
  -mvect8-ret-in-mem          将 8 字节向量在内存中返回  
  -mvzeroupper                Generate vzeroupper instruction before a transfer  
                              of control flow out of the function.  
  -mwin32                     设定 Windows 定义  
  -mwindows                   创建图形界面程序  
  -mx32                       Generate 32bit x86-64 code  
  -mxop                       支持 XOP 内建函数及代码生成  
  -mxsave                     Support XSAVE and XRSTOR instructions  
  -mxsaveopt                  Support XSAVEOPT instruction  

  Known assembler dialects (for use with the -masm-dialect= option):  
    att intel  

  Known ABIs (for use with the -mabi= option):  
    ms sysv  

  Known code models (for use with the -mcmodel= option):  
    32 kernel large medium small  

  Valid arguments to -mfpmath=:  
    387 387+sse 387,sse both sse sse+387 sse,387  

  Known vectorization library ABIs (for use with the -mveclibabi= option):  
    acml svml  

  Known address mode (for use with the -maddress-mode= option):  
    long short  

  Valid arguments to -mstringop-strategy=:  
    byte_loop libcall loop rep_4byte rep_8byte rep_byte unrolled_loop  

  Known TLS dialects (for use with the -mtls-dialect= option):  
    gnu gnu2  

下列选项与具体语言无关:  
  --debug                     此开关缺少可用文档  
  --dumpbase                  此开关缺少可用文档  
  --dumpdir                   此开关缺少可用文档  
  --help                      显示此信息  
  --help=<类型>             显示一或多项特定类型选项的描述。类型可能是  
                              optimizers、target、warnings、undocumented 或  
                              params  
  --optimize                  此开关缺少可用文档  
  --param <参数>=<值>      将参数参数设为给定值。下面给出所有参数的列表  
  --param=                    此开关缺少可用文档  
  --pedantic-errors           此开关缺少可用文档  
  --profile                   此开关缺少可用文档  
  --target-help               --help=target 的别名  
  --version                   此开关缺少可用文档  
  -Werror=                    将指定的警告当作错误  
  -Wfatal-errors              发现第一个错误时即退出  
  -Wframe-larger-than=     当一个函数的堆栈框架需要多于 N  
                              字节的内存时给出警告  
  -Wmissing-noreturn          此开关缺少可用文档  
  -Wunreachable-code          不起作用。为向前兼容保留的选项。  
  -aux-info <文件>          将声明信息写入文件  
  -aux-info=                  此开关缺少可用文档  
  -auxbase                    此开关缺少可用文档  
  -auxbase-strip              此开关缺少可用文档  
  -dumpbase <文件>          设定内存转储使用的文件基本名  
  -dumpdir <目录>           设定内存转储使用的目录名  
  -fPIC                       尽可能生成与位置无关的代码(大模式)  
  -fPIE                       为可执行文件尽可能生成与位置无关的代码(大模式)  
  -fabi-version=              此开关缺少可用文档  
  -falign-functions=          此开关缺少可用文档  
  -falign-jumps=              此开关缺少可用文档  
  -falign-labels=             此开关缺少可用文档  
  -falign-loops=              此开关缺少可用文档  
  -fargument-alias            不起作用。为向前兼容保留的选项。  
  -fargument-noalias          不起作用。为向前兼容保留的选项。  
  -fargument-noalias-anything 不起作用。为向前兼容保留的选项。  
  -fargument-noalias-global   不起作用。为向前兼容保留的选项。  
  -fassociative-math          Allow optimization for floating-point arithmetic  
                              which may change the result of the operation due  
                              to rounding.  
  -fauto-inc-dec              生成 auto-inc/dec指令  
  -fbounds-check              生成检查数组访问是否越界的代码  
  -fcall-saved-<寄存器>    认为寄存器在函数调用后值不变  
  -fcall-used-<寄存器>     认为寄存器的值将被函数调用所改变  
  -fcheck-data-deps           比较几个数据依赖分析的结果。  
  -fcompare-debug-second      只为 -fcompare-debug 运行第二遍编译  
  -fcompare-debug[=<选项>]  分别在带与不带“选项”,例如  
                              -gtoggle,的情况下编译,然后比较最后的指令输出  
  -fcse-skip-blocks           不起作用。为向前兼容保留的选项。  
  -fdbg-cnt-list              列出所有可用的调试计数器及其极限和计数。  
  -fdbg-cnt=<计数器>:<极限>[,<计数器>:<极限>,...] 设定调试计数器极限。  
  -fdebug-prefix-map=         在调试信息中将一个目录名映射到另一个  
  -fdebug-types-section       Output .debug_types section when using DWARF v4  
                              debuginfo.  
  -fdelete-dead-exceptions    Delete dead instructions that may throw exceptions  
  -fdiagnostics-show-caret    Show the source line with a caret indicating the  
                              column  
  -fdiagnostics-show-location=[once|every-line] 指定在自动换行的诊断信息开始给出源位置的频率  
  -fdiagnostics-show-option   在诊断信息后输出控制它们的命令行选项  
  -fdisable-                  -fdisable-[tree|rtl|ipa]-=range1+range2  
                              disables an optimization pass  
  -fdump-<类型>             将一些编译器内部信息转储到一个文件里  
  -fdump-final-insns=文件名 在翻译完毕后将指令输出到文件中  
  -fdump-go-spec=filename     Write all declarations to file as Go code  
  -fdump-noaddr               在调试转储中不输出地址  
  -fdump-passes               Dump optimization passes  
  -fdump-unnumbered           在调试转储中不输出指令数、行号标记和地址  
  -fdump-unnumbered-links     在调试转储中不输出前一条和后一条指令号码  
  -fdwarf2-cfi-asm            用 GAS 汇编指示来启用 CFI 表  
  -feliminate-dwarf2-dups     进行 DWARF2 冗余消除  
  -feliminate-unused-debug-symbols 在调试信息中进行无用类型消除  
  -feliminate-unused-debug-types 在调试信息中进行无用类型消除  
  -femit-class-debug-always   保留 C++ 类调试信息。  
  -fenable-                   -fenable-[tree|rtl|ipa]-=range1+range2  
                              enables an optimization pass  
  -fexcess-precision=[fast|standard] 指定如何处理有额外精度的浮点数  
  -ffast-math                 此开关缺少可用文档  
  -ffat-lto-objects           Output lto objects containing both the  
                              intermediate language and binary output.  
  -ffixed-<寄存器>         认为寄存器对编译器而言不可用  
  -fforce-addr                不起作用。为向前兼容保留的选项。  
  -ffp-contract=              -ffp-contract=[off|on|fast] Perform floating-  
                              point expression contraction.  
  -ffunction-cse              允许将函数地址保存在寄存器中  
  -ffunction-sections         将每个函数分别放在它们各自的节中  
  -fgnu-tm                    Enable support for GNU transactional memory  
  -fgraphite                  启用 Graphite 表示的输入输出  
  -fhelp                      此开关缺少可用文档  
  -fhelp=                     此开关缺少可用文档  
  -fident                     处理 #ident 指令  
  -findirect-inlining         进行间接内联  
  -finhibit-size-directive    不生成 .size 伪指令  
  -finline-limit-             此开关缺少可用文档  
  -finline-limit=          将内联函数的大小限制在 N 以内  
  -finstrument-functions      在函数入口和出口加入取样调用  
  -finstrument-functions-exclude-file-list= -finstrument-functions-exclude-file-  
                              list=文件名,...   
                              取样时排除列出的文件中的函数  
  -finstrument-functions-exclude-function-list= -finstrument-functions-exclude-  
                              function-list=函数名,...   
                              取样时排除列出的函数  
  -fipa-matrix-reorg          不起作用。为向前兼容保留的选项。  
  -fipa-struct-reorg          不起作用。为向前兼容保留的选项。  
  -fira-algorithm=            -fira-algorithm=|CB|priority] 设置使用的 IRA  
                              算法  
  -fira-loop-pressure         Use IRA based register pressure calculation in  
                              RTL loop optimizations.  
  -fira-region=               -fira-region=[one|all|mixed] 设置 IRA 的区域  
  -fira-share-save-slots      为保存不同的硬寄存器的共享槽。  
  -fira-share-spill-slots     为溢出的伪寄存器共享堆栈槽。  
  -fira-verbose=           控制 IRA 诊断信息的级别。  
  -fkeep-inline-functions     为完全内联的函数生成代码  
  -fkeep-static-consts        保留未用到的静态常量  
  -fleading-underscore        给外部符号添加起始的下划线  
  -floop-flatten              不起作用。为向前兼容保留的选项。  
  -floop-optimize             不起作用。为向前兼容保留的选项。  
  -flto                       启用链接时优化。  
  -flto-compression-level= 为 IL 使用 zlib 压缩级别 N  
  -flto-partition=1to1        Partition symbols and vars at linktime based on  
                              object files they originate from  
  -flto-partition=balanced    Partition functions and vars at linktime into  
                              approximately same sized buckets  
  -flto-partition=max         Put every symbol into separate partition  
  -flto-partition=none        Disable partioning and streaming  
  -flto-report                报告各种链接时优化统计  
  -flto=                      Link-time optimization with number of parallel  
                              jobs or jobserver.  
  -fmax-errors=            报告错误数量的上限值  
  -fmem-report                报告永久性内存分配  
  -fmem-report-wpa            Report on permanent memory allocation in WPA only  
  -fmerge-debug-strings       试图合并不同编译单元中的相同调试字符串  
  -fmessage-length=        将诊断信息限制在每行 N 个字符。0  
                              取消自动换行  
  -fmodulo-sched-allow-regmoves 进行基于 SMS  
                              且允许寄存器转移的模调度  
  -fopt-info[-=filename] Dump compiler optimization details  
  -fpartial-inlining          进行部分内联  
  -fpcc-struct-return         在内存而不是寄存器中返回小聚合  
  -fpic                       尽可能生成与位置无关的代码(小模式)  
  -fpie                       为可执行文件尽可能生成与位置无关的代码(小模式)  
  -fplugin-arg-<插件>-<键>[=<值>] 为插件指定参数键=值  
  -fplugin=                   指定要加载的插件  
  -fpost-ipa-mem-report       在跨进程优化前报告内存分配  
  -fpre-ipa-mem-report        在跨进程优化前报告内存分配  
  -fprofile                   启用基本程序取样代码  
  -fprofile-arcs              插入基于弧的程序取样代码  
  -fprofile-correction        启用对流不一致取样数据输入的修正  
  -fprofile-dir=              Set the top-level directory for storing the  
                              profile data. The default is 'pwd'.  
  -fprofile-generate          启用一些公共选项来生成样本文件,以便进行基于取样的优化  
  -fprofile-generate=         启用生成取样信息的公共选项以支持基于取样反馈的优化,同时设置  
                              -fprofile-dir=  
  -fprofile-report            Report on consistency of profile  
  -fprofile-use               启用一些公共选项以进行基于取样的优化  
  -fprofile-use=              启用公共选项以进行基于取样反馈的优化,同时设置  
                              -fprofile-dir=  
  -fprofile-values            为取样表达式的值插入相关代码  
  -frandom-seed               此开关缺少可用文档  
  -frandom-seed=<字符串>   使用字符串使编译可以复现  
  -freciprocal-math           与 -fassociative-math  
                              相同,作用于包含除法的表达式。  
  -frecord-gcc-switches       在目标文件中记录 gcc 命令行开关。  
  -free                       Turn on Redundant Extensions Elimination pass.  
  -frerun-loop-opt            不起作用。为向前兼容保留的选项。  
  -fsanitize=address          Enable AddressSanitizer, a memory error detector  
  -fsanitize=thread           Enable ThreadSanitizer, a data race detector  
  -fsched-stalled-insns-dep= 设置排队中指令的进行早调度的依赖距离检查  
  -fsched-stalled-insns=   指定能被早期调度的在排队中的指令的最大数量  
  -fsched-verbose=         指定调度器的冗余级别  
  -fsched2-use-traces         不起作用。为向前兼容保留的选项。  
  -fsee                       不起作用。为向前兼容保留的选项。  
  -fshow-column               诊断信息中给出行号。默认打开  
  -fsplit-stack               Generate discontiguous stack frames  
  -fstack-check               在程序中插入检查栈溢出的代码。与  
                              fstack-check=specific 相同  
  -fstack-check=[no|generic|specific] 在程序中插入检查栈溢出的代码  
  -fstack-limit               此开关缺少可用文档  
  -fstack-limit-symbol=<寄存器> 当堆栈越过寄存器时引发陷阱  
  -fstack-limit-symbol=<符号> 当堆栈越过符号时引发陷阱  
  -fstack-protector           使用 propolice 来保护堆栈  
  -fstack-protector-all       为每个函数使用堆栈保护机制  
  -fstack-reuse=              -fstack-reuse=[all|named_vars|none] Set stack  
                              reuse level for local variables.  
  -fstack-usage               Output stack usage information on a per-function  
                              basis  
  -fstrength-reduce           不起作用。为向前兼容保留的选项。  
  -fstrict-overflow           将有符号数溢出的行为视为未定义的  
  -fstrict-volatile-bitfields Force bitfield accesses to match their type width  
  -fsync-libcalls             Implement __atomic operations via libcalls to  
                              legacy __sync functions  
  -fsyntax-only               检查语法错误,然后停止  
  -ftarget-help               此开关缺少可用文档  
  -ftest-coverage             生成“gcov”需要的数据文件  
  -ftime-report               报告每趟汇编的耗时  
  -ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec] 设定默认的线程局部存储代码生成模式  
  -ftracer                    通过尾复制进行超块合成  
  -ftree-loop-linear          Enable loop interchange transforms.  Same as  
                              -floop-interchange  
  -ftree-parallelize-loops=   启用循环的自动并行化  
  -ftree-salias               不起作用。为向前兼容保留的选项。  
  -ftree-store-ccp            不起作用。为向前兼容保留的选项。  
  -ftree-store-copy-prop      不起作用。为向前兼容保留的选项。  
  -ftree-vectorizer-verbose= This switch is deprecated. Use -fopt-info  
                              instead.  
  -fuse-ld=bfd                Use the bfd linker instead of the default linker  
  -fuse-ld=gold               Use the gold linker instead of the default linker  
  -fuse-linker-plugin         此开关缺少可用文档  
  -fverbose-asm               为汇编输出添加额外注释  
  -fversion                   此开关缺少可用文档  
  -fvisibility=[default|internal|hidden|protected] 设置符号的默认可见性  
  -fwritable-relocated-rdata  Put relocated read-only data into .data section.  
  -fzee                       不起作用。为向前兼容保留的选项。  
  -fzero-initialized-in-bss   将初始化为零的数据存放在 bss 节中  
  -g                          生成默认格式的调试信息  
  -gcoff                      生成 COFF 格式的调试信息  
  -gdwarf-                    生成 DWARF v2(或更新)格式的调试信息  
  -ggdb                       生成默认扩展格式的调试信息  
  -gno-pubnames               Don't generate DWARF pubnames and pubtypes  
                              sections.  
  -gno-record-gcc-switches    Don't record gcc command line switches in DWARF  
                              DW_AT_producer.  
  -gno-split-dwarf            Don't generate debug information in separate .dwo  
                              files  
  -gno-strict-dwarf           生成较所选版本更先进的 DWARF  
                              附加信息  
  -gpubnames                  Generate DWARF pubnames and pubtypes sections.  
  -grecord-gcc-switches       Record gcc command line switches in DWARF  
                              DW_AT_producer.  
  -gsplit-dwarf               Generate debug information in separate .dwo files  
  -gstabs                     生成 STABS 格式的调试信息  
  -gstabs+                    生成扩展 STABS 格式的调试信息  
  -gstrict-dwarf              不生成较所选版本更先进的 DWARF  
                              附加信息  
  -gtoggle                    切换调试信息生成  
  -gvms                       生成 VMS 格式的调试信息  
  -gxcoff                     生成 XCOFF 格式的调试信息  
  -gxcoff+                    生成 XCOFF 扩展格式的调试信息  
  -imultiarch            Set  to be the multiarch include subdirectory  
  -iplugindir=<目录>        将目录设定为默认的插件子目录  
  -p                          启用函数取样  
  -pedantic-errors            与 -pedantic 类似,但将它们视作错误  
  -quiet                      不显示编译的函数或逝去的时间  

Usage: /usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/as [option...] [asmfile...]  
Options:  
  -a[sub-option...]   turn on listings  
                          Sub-options [default hls]:  
                          c      omit false conditionals  
                          d      omit debugging directives  
                          g      include general info  
                          h      include high-level source  
                          l      include assembly  
                          m      include macro expansions  
                          n      omit forms processing  
                          s      include symbols  
                          =FILE  list to FILE (must be last sub-option)  
  --alternate             initially turn on alternate macro syntax  
  --compress-debug-sections  
                          compress DWARF debug sections using zlib  
  --nocompress-debug-sections  
                          don't compress DWARF debug sections  
  -D                      produce assembler debugging messages  
  --debug-prefix-map OLD=NEW  
                          map OLD to NEW in debug information  
  --defsym SYM=VAL        define symbol SYM to given value  
  -f                      skip whitespace and comment preprocessing  
  -g --gen-debug          generate debugging information  
  --gstabs                generate STABS debugging information  
  --gstabs+               generate STABS debug info with GNU extensions  
  --gdwarf-2              generate DWARF2 debugging information  
  --gdwarf-sections       generate per-function section names for DWARF line information  
  --hash-size=     set the hash table size close to   
  --help                  show this message and exit  
  --target-help           show target specific options  
  -I DIR                  add DIR to search list for .include directives  
  -J                      don't warn about signed overflow  
  -K                      warn when differences altered for long displacements  
  -L,--keep-locals        keep local symbols (e.g. starting with `L')  
  -M,--mri                assemble in MRI compatibility mode  
  --MD FILE               write dependency information in FILE (default none)  
  -nocpp                  ignored  
  -o OBJFILE              name the object-file output OBJFILE (default a.out)  
  -R                      fold data section into text section  
  --reduce-memory-overheads   
                          prefer smaller memory use at the cost of longer  
                          assembly times  
  --statistics            print various measured statistics from execution  
  --strip-local-absolute  strip local absolute symbols  
  --traditional-format    Use same format as native assembler when possible  
  --version               print assembler version number and exit  
  -W  --no-warn           suppress warnings  
  --warn                  don't suppress warnings  
  --fatal-warnings        treat warnings as errors  
  -w                      ignored  
  -X                      ignored  
  -Z                      generate object file even after errors  
  --listing-lhs-width     set the width in words of the output data column of  
                          the listing  
  --listing-lhs-width2    set the width in words of the continuation lines  
                          of the output data column; ignored if smaller than  
                          the width of the first line  
  --listing-rhs-width     set the max width in characters of the lines from  
                          the source file  
  --listing-cont-lines    set the maximum number of continuation lines used  
                          for the output data column of the listing  
  @FILE                   read options from FILE  
  -n                      Do not optimize code alignment  
  -q                      quieten some warnings  
  --32/--64/--x32         generate 32bit/64bit/x32 code  
  --divide                ignored  
  -march=CPU[,+EXTENSION...]  
                          generate code for CPU and EXTENSION, CPU is one of:  
                           generic32, generic64, i386, i486, i586, i686,  
                           pentium, pentiumpro, pentiumii, pentiumiii, pentium4,  
                           prescott, nocona, core, core2, corei7, l1om, k1om,  
                           k6, k6_2, athlon, opteron, k8, amdfam10, bdver1,  
                           bdver2, bdver3, bdver4, btver1, btver2  
                          EXTENSION is combination of:  
                           8087, 287, 387, no87, mmx, nommx, sse, sse2, sse3,  
                           ssse3, sse4.1, sse4.2, sse4, nosse, avx, avx2,  
                           avx512f, avx512cd, avx512er, avx512pf, noavx, vmx,  
                           vmfunc, smx, xsave, xsaveopt, aes, pclmul, fsgsbase,  
                           rdrnd, f16c, bmi2, fma, fma4, xop, lwp, movbe, cx16,  
                           ept, lzcnt, hle, rtm, invpcid, clflush, nop, syscall,  
                           rdtscp, 3dnow, 3dnowa, padlock, svme, sse4a, abm,  
                           bmi, tbm, adx, rdseed, prfchw, smap, mpx, sha,  
                           clflushopt, xsavec, xsaves, prefetchwt1  
  -mtune=CPU              optimize for CPU, CPU is one of:  
                           generic32, generic64, i8086, i186, i286, i386, i486,  
                           i586, i686, pentium, pentiumpro, pentiumii,  
                           pentiumiii, pentium4, prescott, nocona, core, core2,  
                           corei7, l1om, k1om, k6, k6_2, athlon, opteron, k8,  
                           amdfam10, bdver1, bdver2, bdver3, bdver4, btver1,  
                           btver2  
  -msse2avx               encode SSE instructions with VEX prefix  
  -msse-check=[none|error|warning]  
                          check SSE instructions  
  -moperand-check=[none|error|warning]  
                          check operand combinations for validity  
  -mavxscalar=[128|256]   encode scalar AVX instructions with specific vector  
                           length  
  -mevexlig=[128|256|512] encode scalar EVEX instructions with specific vector  
                           length  
  -mevexwig=[0|1]         encode EVEX instructions with specific EVEX.W value  
                           for EVEX.W bit ignored instructions  
  -mmnemonic=[att|intel]  use AT&T/Intel mnemonic  
  -msyntax=[att|intel]    use AT&T/Intel syntax  
  -mindex-reg             support pseudo index registers  
  -mnaked-reg             don't require `%' prefix for registers  
  -mold-gcc               support old (<= 2.8.1) versions of gcc  
  -madd-bnd-prefix        add BND prefix for all valid branches  
  -mbig-obj               generate big object files  

Report bugs to   
Usage: collect2 [options]  
 Wrap linker and generate constructor code if needed.  
 Options:  
  -debug          Enable debug output  
  --help          Display this information  
  -v, --version   Display this program's version number  

Overview: http://gcc.gnu.org/onlinedocs/gccint/Collect2.html  
Report bugs:   

用法:/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld [选项] 文件...  
选项:  
  -a 关键字                Shared library control for HP/UX compatibility  
  -A 架构, --architecture 架构  
                              设定 CPU 架构  
  -b 目标, --format 目标  指定随后的输入文件的目标  
  -c 文件, --mri-script 文件  
                              读取 MRI 格式的链接脚本  
  -d, -dc, -dp                强制公共符号必须定义  
  -e 地址, --entry 地址   设定起始地址  
  -E, --export-dynamic        导出所有动态符号  
  --no-export-dynamic         Undo the effect of --export-dynamic  
  -EB                         链接高位字节在前的目标文件  
  -EL                         链接低位字节在前的目标文件  
  -f 共享库, --auxiliary 共享库  
                              指定为某共享对象符号表的辅助过滤器  
  -F 共享库, --filter 共享库  
                              指定为某共享对象符号表的过滤器  
  -g                          忽略  
  -G 大小, --gpsize 大小  小数据的大小(如果未给出大小,与 --shared 相同)  
  -h 文件名, -soname 文件名  
                              设定共享库的内部名称  
  -I 程序, --dynamic-linker 程序  
                              将“程序”设为要使用的动态链接器  
  -l 库名, --library 库名 搜索库“库名”  
  -L 目录, --library-path 目录  
                              将“目录”添加到库搜索路径中  
  --sysroot=       Override the default sysroot location  
  -m 仿真                   设定仿真  
  -M, --print-map             在标准输出上打印链接图文件  
  -n, --nmagic                不将数据对齐至页边界  
  -N, --omagic                不将数据对齐至页边界,不将 text 节只读  
  --no-omagic                 将数据对齐至页边界,令 text 节只读  
  -o 文件, --output 文件  设定输出文件名  
  -O                          优化输出文件  
  -plugin PLUGIN              Load named plugin  
  -plugin-opt ARG             Send arg to last-loaded plugin  
  -flto                       Ignored for GCC LTO option compatibility  
  -flto-partition=            Ignored for GCC LTO option compatibility  
  -fuse-ld=                   Ignored for GCC linker option compatibility  
  -Qy                         为 SVR4 兼容性所忽略  
  -q, --emit-relocs           Generate relocations in final output  
  -r, -i, --relocatable       生成可重新定位的输出  
  -R 文件, --just-symbols 文件  
                              仅链接符号 (如果是目标,与 --rpath 相同)  
  -s, --strip-all             剔除所有符号信息  
  -S, --strip-debug           剔除调试符号信息  
  --strip-discarded           剔除被丢弃的节中的符号  
  --no-strip-discarded        不剔除被丢弃的节中的符号  
  -t, --trace                 跟踪文件打开操作  
  -T 文件, --script 文件  读取链接脚本  
  --default-script 文件, -dT  
                              Read default linker script  
  -u 符号, --undefined 符号  
                              Start with undefined reference to SYMBOL  
  --unique [=节]             不合并名为“节”的输入节或孤立节  
  -Ur                         生成全局构造/析构函数表  
  -v, --version               显示版本信息  
  -V                          显示版本和仿真信息  
  -x, --discard-all           丢弃所有局部符号  
  -X, --discard-locals        丢弃临时局部符号(默认)  
  --discard-none              不丢弃任何局部符号  
  -y 符号, --trace-symbol 符号  
                              Trace mentions of SYMBOL  
  -Y 路径                   Default search path for Solaris compatibility  
  -(, --start-group           开始一个组  
  -), --end-group             结束一个组  
  --accept-unknown-input-arch 接受无法决定其架构的输入文件  
  --no-accept-unknown-input-arch  
                              拒绝架构不明的输入文件  
  --as-needed                 Only set DT_NEEDED for following dynamic libs if used  
  --no-as-needed              Always set DT_NEEDED for dynamic libraries mentioned on  
                                the command line  
  -assert 关键字           为 SunOS 兼容性所忽略  
  -Bdynamic, -dy, -call_shared  
                              链接到共享库  
  -Bstatic, -dn, -non_shared, -static  
                              不链接到共享库  
  -Bsymbolic                  Bind global references locally  
  -Bsymbolic-functions        Bind global function references locally  
  --check-sections            Check section addresses for overlaps (default)  
  --no-check-sections         Do not check section addresses for overlaps  
  --copy-dt-needed-entries    Copy DT_NEEDED links mentioned inside DSOs that follow  
  --no-copy-dt-needed-entries Do not copy DT_NEEDED links mentioned inside DSOs that follow  
  --cref                      输出交叉引用表  
  --defsym 符号=表达式   定义一个符号  
  --demangle [=风格]        解修饰符号名[使用“风格”]  
  --embedded-relocs           Generate embedded relocs  
  --fatal-warnings            将警告当作错误  
  --no-fatal-warnings         Do not treat warnings as errors (default)  
  -fini 符号                Call SYMBOL at unload-time  
  --force-exe-suffix          强制为生成的文件添加 .exe 后缀  
  --gc-sections               删除未使用的节(在某些目标上)  
  --no-gc-sections            不删除未使用的节(默认)  
  --print-gc-sections         List removed unused sections on stderr  
  --no-print-gc-sections      Do not list removed unused sections  
  --hash-size=        初始的散列表大小设定接近“数”  
  --help                      显示选项帮助  
  -init 符号                Call SYMBOL at load-time  
  -Map 文件                 写入一个链接图文件  
  --no-define-common          Do not define Common storage  
  --no-demangle               Do not demangle symbol names  
  --no-keep-memory            更多地使用磁盘 I/O 而不是内存  
  --no-undefined              不允许在目标文件中存在无法解析的引用  
  --allow-shlib-undefined     Allow unresolved references in shared libraries  
  --no-allow-shlib-undefined  不允许在共享库中存在无法解析的引用  
  --allow-multiple-definition 允许多个定义  
  --no-undefined-version      不允许未定义的版本  
  --default-symver            生成默认的符号版本  
  --default-imported-symver   为导入符号生成默认的符号版本  
  --no-warn-mismatch          不为不匹配的输入文件发出警告  
  --no-warn-search-mismatch   Don't warn on finding an incompatible library  
  --no-whole-archive          关闭 --whole-archive  
  --noinhibit-exec            Create an output file even if errors occur  
  -nostdlib                   Only use library directories specified on  
                                the command line  
  --oformat 目标            指定输出文件的目标  
  --print-output-format       Print default output format  
  -qmagic                     为 Linux 兼容性所忽略  
  --reduce-memory-overheads   Reduce memory overheads, possibly taking much longer  
  --relax                     Reduce code size by using target specific optimizations  
  --no-relax                  Do not use relaxation techniques to reduce code size  
  --retain-symbols-file 文件  
                              只保留在“文件”中列出的符号  
  -rpath 路径               设定运行时共享库的搜索路径  
  -rpath-link 路径          设定链接时共享库的搜索路径  
  -shared, -Bshareable        创建一个共享库  
  -pie, --pic-executable      生成一个位置无关的可执行文件  
  --sort-common [=ascending|descending]  
                              Sort common symbols by alignment [in specified order]  
  --sort-section 名称|对齐  
                              Sort sections by name or maximum alignment  
  --spare-dynamic-tags 计数 How many tags to reserve in .dynamic section  
  --split-by-file [=大小]   Split output sections every SIZE octets  
  --split-by-reloc [=计数]  Split output sections every COUNT relocs  
  --stats                     打印内存使用统计  
  --target-help               显示目标相关的选项  
  --task-link 符号          Do task level linking  
  --traditional-format        Use same format as native linker  
  --section-start 节=地址  设定有名节的地址  
  -Tbss 地址                设定 .bss 节的地址  
  -Tdata 地址               设定 .data 节的地址  
  -Ttext 地址               设定 .text 节的地址  
  -Ttext-segment 地址       Set address of text segment  
  -Trodata-segment 地址     Set address of rodata segment  
  -Tldata-segment 地址      Set address of ldata segment  
  --unresolved-symbols=  
                              How to handle unresolved symbols.   is:  
                                ignore-all, report-all, ignore-in-object-files,  
                                ignore-in-shared-libs  
  --verbose [=NUMBER]         链接过程中输出大量相关信息  
  --version-script 文件     读取版本信息脚本  
  --version-exports-section 符号  
                              Take export symbols list from .exports, using  
                                SYMBOL as the version.  
  --dynamic-list-data         Add data symbols to dynamic list  
  --dynamic-list-cpp-new      Use C++ operator new/delete dynamic list  
  --dynamic-list-cpp-typeinfo Use C++ typeinfo dynamic list  
  --dynamic-list 文件       Read dynamic list  
  --warn-common               为重复的公共符号给出警告  
  --warn-constructors         Warn if global constructors/destructors are seen  
  --warn-multiple-gp          Warn if the multiple GP values are used  
  --warn-once                 为每一个未定义的符号只警告一次  
  --warn-section-align        Warn if start of section changes due to alignment  
  --warn-shared-textrel       Warn if shared object has DT_TEXTREL  
  --warn-alternate-em         Warn if an object has alternate ELF machine code  
  --warn-unresolved-symbols   将不能解析的符号视作警告  
  --error-unresolved-symbols  将不能解析的符号视作错误  
  --whole-archive             Include all objects from following archives  
  --wrap 符号               Use wrapper functions for SYMBOL  
  --ignore-unresolved-symbol 符号  
                              Unresolved SYMBOL will not cause an error or warning  
  @FILE                       Read options from FILE  
/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld:支持的目标: pe-i386 pei-i386 elf32-i386 elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex  
/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld:支持的仿真:i386pe  
/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../../i686-pc-cygwin/bin/ld:仿真特定选项:  
i386pe:   
  --base_file <基址文件>             为可重定位的 DLL 生成一个基址文件  
  --dll                              设定 DLL 的默认映象基地址  
  --file-alignment <大小>            设定文件对齐边界  
  --heap <大小>                      设定堆的初始大小  
  --image-base <地址>                设定可执行文件的起始地址  
  --major-image-version <数>         设定可执行文件的版本号  
  --major-os-version <数>            设定对操作系统版本的最低要求  
  --major-subsystem-version <数>     设定对操作系统子系统版本的最低要求  
  --minor-image-version <数>         设定可执行文件的修订版本号  
  --minor-os-version <数>            设定对操作系统修订版本的最低要求  
  --minor-subsystem-version <数>     设定对操作系统子系统修订版本的最低要求  
  --section-alignment <大小>         设定节的对齐边界  
  --stack <大小>                     设定初始栈的大小  
  --subsystem <名>[:<版本>]          设定需要的操作系统子系统[和版本号]  
  --support-old-code                 支持与旧式代码的交互工作  
  --[no-]leading-underscore          Set explicit symbol underscore prefix mode  
  --thumb-entry=             Set the entry point to be Thumb   
  --insert-timestamp                 Use a real timestamp rather than zero.  
                                     This makes binaries non-deterministic  
  --add-stdcall-alias                导出带与不带 @nn 的符号  
  --disable-stdcall-fixup            不将 _sym 链接至 _sym@nn  
  --enable-stdcall-fixup             将 _sym 链接至 _sym@nn 而不给出警告  
  --exclude-symbols 符号,符号,...    将一些符号排除在自动导入以外  
  --exclude-all-symbols              Exclude all symbols from automatic export  
  --exclude-libs 库,库,...           将一些库排除在自动导入以外  
  --exclude-modules-for-implib mod,mod,...  
                                     Exclude objects, archive members from auto  
                                     export, place into import library instead.  
  --export-all-symbols               自动将所有全局量导出至 DLL  
  --kill-at                          从导出符号中移去 @nn  
  --out-implib <文件>                生成导入库  
  --output-def <文件>                为建立的 DLL 生成一个 .DEF 文件  
  --warn-duplicate-exports           Warn about duplicate exports  
  --compat-implib                    生成后向兼容的导入库;  
                                       同时生成 __imp_<符号>。  
  --enable-auto-image-base[=
] Automatically choose image base for DLLs (optionally starting with address) unless specifically set with --image-base --disable-auto-image-base 不自动选择映象基地址。(默认) --dll-search-prefix=<字符串> 动态链接至 DLL 而缺少导入库时,使用 <字符串><基本名>.dll 而不是 lib<基本名>.dll --enable-auto-import Do sophisticated linking of _sym to __imp_sym for DATA references --disable-auto-import 不为 DLL 自动导入 DATA 项 --enable-runtime-pseudo-reloc Work around auto-import limitations by adding pseudo-relocations resolved at runtime. --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for auto-imported DATA. --enable-extra-pe-debug 当生成或链接至 DLL 时(尤其当自动导入时)启用 详细的调试输出 --large-address-aware 可执行文件支持大于 2 GB 的虚拟内存地址 --disable-large-address-aware Executable does not support virtual addresses greater than 2 gigabytes --enable-long-section-names Use long COFF section names even in executable image files --disable-long-section-names Never use long COFF section names, even in object files --dynamicbase Image base address may be relocated using address space layout randomization (ASLR) --forceinteg Code integrity checks are enforced --nxcompat Image is compatible with data execution prevention --no-isolation Image understands isolation but do not isolate the image --no-seh Image does not use SEH. No SE handler may be called in this image --no-bind Do not bind this image --wdmdriver Driver uses the WDM model --tsaware Image is Terminal Server aware 向 报告程序缺陷 For bug reporting instructions, please see:

文档中找不到的选项

-Wno-psabi

suppress these va_list mangling warnings with gcc -Wno-psabi。

-fno-short-enums

-fshort-enums支持给enum类型分配它声明的值域范围的字节数;

enum类型等于大小足够的最小整数类型。

也就是说

typedef enum num{

      one = 1,

      two = 2,

      three = 3,

      four = 4,

}NUM;

NUM num1;

sizeof(num1)不增加这个-fshort-enums选项的时候为4,增加后为大小为1;

-fno-short-enums则是无这个选项优化处理。gcc是默认没有-fshort-enums这个选项的;

-fno-strict-aliasing
   Allows the compiler to assume the strictest aliasing rules applicable to the language being compiled. For C (and C++), this activates optimizations based on the type of expressions. In particular, an object of one type is assumed never to reside at the same address as an object of a different type, unless the types are almost the same. For example, an unsigned int can alias an int, but not avoid* or a double. A character type may alias any other type.

  要确保不违反这个规则,那么确实需要让不同指针指向同一个内存位置怎么办?对于已有的代码,违反的地方非常多,那么可以加gcc的-fno-strict-aliasing参数。其实在开启优化选项-O2和-O3的情况下,gcc会自动采用strict

aliasing进行编译器的优化。为了允许不同指针指向同一个内存位置,需要加gcc的编译选项: CFLAGS+=-fno-strict-aliasing。

  If optimization level is >= 2 in gcc-4.1, strict-aliasing is used, and this could cause probelms when a pointer is referencing to a different type of object and the object is refered thereafter by using this pointer. That is the case in this example. So you should force the compiler to not use strict-aliasing by a argument "-fno-strict-aliasing" if you want to use "-O2" or "-O3".

错误实例:

      float f = j;
      unsigned int* p = (unsigned int*)(&f);

在存在强制类型转换的情况下,采用-O1和采用-O2或-O3产生的运行结果是不同的。

-mfpu = name(neon or vfpvx) -mfloat-abi = name(soft、hard、 softfp)

ARM平台指定浮点数运算优化,软浮点和硬浮点,以及浮点运算向量单元。

NEON:SIMD(Single Instruction Multiple Data 单指令多重数据) 指令集, 其针对多媒体和讯号处理程式具备标准化的加速能力。

VFP: (Vector Float Point), 向量浮点运算单元,arm11(s3c6410 支持VFPv2),Cortex-A8(s5pv210)支持VFPv3.

NEON和VFPv3 浮点协处理器共享寄存器组,所以在汇编时,指令是一样的。

软浮点是通过浮点库去实现浮点运算的,效率低;硬浮点是通过浮点运算单元(FPU)来完成的,效率高。
(1)硬浮点(hard-float)
编译器将代码直接编译成硬件浮点协处理器(浮点运算单元FPU)能识别的指令,这些指令在执行的时候ARM核直接把它转给协处理器执行。FPU 通常有一套额外的寄存器来完成浮点参数传递和运算。使用实际的硬件浮点运算单元(FPU)会带来性能的提升。
(2)软浮点(soft-float)
编译器把浮点运算转成浮点运算的函数调用和库函数调用,没有FPU的指令调用,也没有浮点寄存器的参数传递。浮点参数的传递也是通过ARM寄存器或者堆栈完成。现在的Linux系统默认编译选择使用hard-float,如果系统没有任何浮点处理器单元,这就会产生非法指令和异常。因而一般的系统镜像都采用软浮点以兼容没有VFP的处理器。

如果只指定 -mfpu,那么默认编译不会选择选择硬件浮点指令集

如果只指定 -mfloat-abi = hard或者softfp,那么编译会使用硬件浮点指令集

…….未完待续,碰到了新的再添加。

你可能感兴趣的:(c语言知识)