zoukankan      html  css  js  c++  java
  • (转载)gcc编译选项总结

    转载自:https://blog.csdn.net/gatieme/article/details/21389603

    常用编译选项

    gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步

    1.预处理,生成.i的文件[预处理器cpp]
    2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]
    3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
    4.连接目标代码,生成可执行程序[链接器ld]

    gcc 命令的常用选项

    选项 解释
    -ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,
    例如 asm 或 typeof 关键词。
    -c 只编译并生成目标文件。
    -DMACRO 以字符串“1”定义 MACRO 宏。
    -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。
    -E 只运行 C 预编译器。
    -g 生成调试信息。GNU 调试器可利用该信息。
    -IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
    -LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
    -lLIBRARY 连接时搜索指定的函数库LIBRARY。
    -m486 针对 486 进行代码优化。
    -o FILE 生成指定的输出文件。用在生成可执行文件时。
    -O0 不进行优化处理。
    -O 或 -O1 优化生成代码。
    -O2 进一步优化。
    -O3 比 -O2 更进一步优化,包括 inline 函数。
    -shared 生成共享目标文件。通常用在建立共享库时。
    -static 禁止使用共享连接。
    -UMACRO 取消对 MACRO 宏的定义。
    -w 不生成任何警告信息。
    -Wall 生成所有警告信息。

    参数详解

    -x language filename
      设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后
    缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀
    名是.pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了
    下一个参数的使用。
      可以使用的参数吗有下面的这些
      c, objective-c, c-header, c++, cpp-output, assembler, and a
    ssembler-with-cpp`.
      看到英文,应该可以理解的。
      例子用法:
      gcc -x c hello.pig
      
    -x none filename
      关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型
      例子用法:
      gcc -x c hello.pig -x none hello2.c
      
    -c
      只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
      例子用法:
      gcc -c hello.c
      他将生成.o的obj文件
    -S
      只激活预处理和编译,就是指把文件编译成为汇编代码。
      例子用法
      gcc -S hello.c
      他将生成.s的汇编代码,你可以用文本编辑器察看
    -E
      只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.
      例子用法:
      gcc -E hello.c > pianoapan.txt
      gcc -E hello.c | more
      慢慢看吧,一个hello word 也要与处理成800行的代码
    -o
      制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感
    ,改掉它,哈哈
      例子用法
      gcc -o hello.exe hello.c (哦,windows用习惯了)
      gcc -o hello.asm -S hello.c
    -pipe
      使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题
      gcc -pipe -o hello.exe hello.c
    -ansi
      关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inl
    ine typeof关键字,以及UNIX,vax等预处理宏,
    -fno-asm
      此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。
        
    -fno-strict-prototype
      只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数
    的个数和类型说明,而不是没有参数.
      而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说明的类型

      
    -fthis-is-varialble
      就是向传统c++看齐,可以使用this当一般变量使用.
      
    -fcond-mismatch
      允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型
      
    -funsigned-char
    -fno-signed-char
    -fsigned-char
    -fno-unsigned-char
      这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参
    数)或者 signed char(后两个参数)
      
    -include file
      包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设
    定,功能就相当于在代码中使用#include
      例子用法:
      gcc hello.c -include /root/pianopan.h
      
    -imacros file
      将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中
      
    -Dmacro
      相当于C语言中的#define macro
      
    -Dmacro=defn
      相当于C语言中的#define macro=defn
      
    -Umacro
      相当于C语言中的#undef macro
    -undef
      取消对任何非标准宏的定义
      
    -Idir
      在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如
    果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他
      回先在你所制定的目录查找,然后再按常规的顺序去找.
      对于#include,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺
    省的头文件目录查找
      
    -I-
      就是取消前一个参数的功能,所以一般在-Idir之后使用
      
    -idirafter dir
      在-I的目录里面查找失败,讲到这个目录里面查找.
      
    -iprefix prefix
    -iwithprefix dir
      一般一起使用,当-I的目录查找失败,会到prefix+dir下查找
      
    -nostdinc
      使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头
    文件的位置
      
    -nostdin C++
      规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创libg++库
    使用
      
    -C
      在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的

      
    -M
      生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c
    来测试一下,很简单。
      
    -MM
      和上面的那个一样,但是它将忽略由#include造成的依赖关系。
      
    -MD
      和-M相同,但是输出将导入到.d的文件里面
      
    -MMD
      和-MM相同,但是输出将导入到.d的文件里面
      
    -Wa,option
      此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然
    后传递给会汇编程序
      
    -Wl.option
      此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然
    后传递给会连接程序.
      
    -llibrary
      制定编译的时候使用的库
      例子用法
      gcc -lcurses hello.c
      使用ncurses库编译程序
      
    -Ldir
      制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然
      编译器将只在标准库的目录找。这个dir就是目录的名称。
      
    -O0
    -O1
    -O2
    -O3
      编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高 
        
    -g
      只是编译器,在编译的时候,产生调试信息。
      
    -gstabs
      此选项以stabs格式声称调试信息,但是不包括gdb调试信息.
      
    -gstabs+
      此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.
      
    -ggdb
      此选项将尽可能的生成gdb的可以使用的调试信息.
    -static
      此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么
    动态连接库,就可以运行.
    -share
      此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
    -traditional
      试图让编译器支持传统的C语言特性

    警告信息控制选项

    下列选项控制编译器警告信息:
    --all-warnings 此开关缺少可用文档
    --extra-warnings 此开关缺少可用文档
    -W 不建议使用此开关;请改用 -Wextra
    -Wabi 当结果与 ABI
    相容的编译器的编译结果不同时给出警告
    -Waddress 使用可疑的内存地址时给出警告
    -Waggregate-return 当返回结构、联合或数组时给出警告
    -Waliasing 为可能的虚参重叠给出警告
    -Walign-commons 对 COMMON 块对齐的警告
    -Wall 启用大部分警告信息
    -Wampersand 若延续字符常量中缺少 & 则给出警告
    -Warray-bounds 当数组访问越界时给出警告
    -Warray-temporaries 创建临时数组时给出警告
    -Wassign-intercept 当 Objective-C
    赋值可能为垃圾回收所介入时给出警告
    -Wattributes 当对属性的使用不合适时给出警告
    -Wbad-function-cast 当把函数转换为不兼容类型时给出警告
    -Wbuiltin-macro-redefined 当内建预处理宏未定义或重定义时给出警告
    -Wc++-compat 当在 C 语言中使用了 C 与 C++
    交集以外的构造时给出警告
    -Wc++0x-compat 当 C++ 构造的意义在 ISO C++ 1998 和 ISO
    C++ 200x 中不同时给出警告
    -Wcast-align 当转换指针类型导致对齐边界增长时给出警告
    -Wcast-qual 当类型转换丢失限定信息时给出警告
    -Wchar-subscripts 当下标类型为“char”时给出警告
    -Wcharacter-truncation 对被截断的字符表达式给出警告
    -Wclobbered 对能为"longjmp"或"vfork"所篡改的变量给出警告
    -Wcomment 对可能嵌套的注释和长度超过一个物理行长的
    C++ 注释给出警告
    -Wcomments -Wcomment 的同义词
    -Wconversion 当隐式类型转换可能改变值时给出警告
    -Wconversion-extra 对大多数隐式类型转换给出警告
    -Wconversion-null 将 NULL 转换为非指针类型时给出警告
    -Wcoverage-mismatch Warn in case profiles in -fprofile-use do not
    match
    -Wcpp Warn when a #warning directive is encountered
    -Wctor-dtor-privacy 当所有构造函数和析构函数都是私有时给出警告
    -Wdeclaration-after-statement 当声明出现在语句后时给出警告
    -Wdeprecated 使用不建议的编译器特性、类、方法或字段时给出警告
    -Wdeprecated-declarations 对 attribute((deprecated)) 声明给出警告
    -Wdisabled-optimization 当某趟优化被禁用时给出警告
    -Wdiv-by-zero 对编译时发现的零除给出警告
    -Wdouble-promotion 对从“float”到“double”的隐式转换给出警告
    -Weffc++ 对不遵循《Effetive
    C++》的风格给出警告
    -Wempty-body 当 if 或 else 语句体为空时给出警告
    -Wendif-labels 当 #elif 和 #endif
    后面跟有其他标识符时给出警告
    -Wenum-compare 对不同枚举类型之间的比较给出警告
    -Werror-implicit-function-declaration 不建议使用此开关;请改用
    -Werror=implicit-function-declaration
    -Wextra 打印额外(可能您并不想要)的警告信息
    -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= 此开关缺少可用文档
    -Wignored-qualifiers 当类型限定符被忽略时给出警告。
    -Wimplicit 对隐式函数声明给出警告
    -Wimplicit-function-declaration 对隐式函数声明给出警告
    -Wimplicit-int 当声明未指定类型时给出警告
    -Wimplicit-interface 对带有隐式接口的调用给出警告
    -Wimplicit-procedure 对没有隐式声明的过程调用给出警告
    -Winit-self 对初始化为自身的变量给出警告。
    -Winline 当内联函数无法被内联时给出警告
    -Wint-to-pointer-cast 当将一个大小不同的整数转换为指针时给出警告
    -Wintrinsic-shadow 如果用户过程有与内建过程相同的名字则警告
    -Wintrinsics-std 当内建函数不是所选标准的一部分时给出警告
    -Winvalid-offsetof 对“offsetof”宏无效的使用给出警告
    -Winvalid-pch 在找到了 PCH
    文件但未使用的情况给出警告
    -Wjump-misses-init 当跳转略过变量初始化时给出警告
    -Wlarger-than- 此开关缺少可用文档
    -Wlarger-than= 当目标文件大于 N 字节时给出警告
    -Wline-truncation 对被截断的源文件行给出警告
    -Wlogical-op 当逻辑操作结果似乎总为真或假时给出警告
    -Wlong-long 当使用 -pedantic 时不对“long
    long”给出警告
    -Wmain 对可疑的“main”声明给出警告
    -Wmissing-braces 若初始值设定项中可能缺少花括号则给出警告
    -Wmissing-declarations 当全局函数没有前向声明时给出警告
    -Wmissing-field-initializers 若结构初始值设定项中缺少字段则给出警告
    -Wmissing-format-attribute 当函数可能是 format
    属性的备选时给出警告
    -Wmissing-include-dirs 当用户给定的包含目录不存在时给出警告
    -Wmissing-noreturn 当函数可能是 attribute((noreturn))
    的备选时给出警告
    -Wmissing-parameter-type K&R
    风格函数参数声明中未指定类型限定符时给出警告
    -Wmissing-prototypes 全局函数没有原型时给出警告
    -Wmudflap 当构造未被 -fmudflap 处理时给出警告
    -Wmultichar 使用多字节字符集的字符常量时给出警告
    -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=<id|nfc|nfkc> 对未归一化的 Unicode 字符串给出警告
    -Wold-style-cast 程序使用 C
    风格的类型转换时给出警告
    -Wold-style-declaration 对声明中的过时用法给出警告
    -Wold-style-definition 使用旧式形参定义时给出警告
    -Woverflow 算术表示式溢出时给出警告
    -Woverlength-strings 当字符串长度超过标准规定的可移植的最大长度时给出警告
    -Woverloaded-virtual 重载虚函数名时给出警告
    -Woverride-init 覆盖无副作用的初始值设定时给出警告
    -Wpacked 当 packed
    属性对结构布局不起作用时给出警告
    -Wpacked-bitfield-compat 当紧实位段的偏移量因 GCC 4.4
    而改变时给出警告
    -Wpadded 当需要填补才能对齐结构成员时给出警告
    -Wparentheses 可能缺少括号的情况下给出警告
    -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 当继承来的方法未被实现时给出警告
    -Wreal-q-constant Warn about real-literal-constants with 'q'
    exponent-letter
    -Wredundant-decls 对同一个对象多次声明时给出警告
    -Wreorder 编译器将代码重新排序时给出警告
    -Wreturn-type 当 C
    函数的返回值默认为“int”,或者 C++
    函数的返回类型不一致时给出警告
    -Wselector 当选择子有多个方法时给出警告
    -Wsequence-point 当可能违反定序点规则时给出警告
    -Wshadow 当一个局部变量掩盖了另一个局部变量时给出警告
    -Wsign-compare 在有符号和无符号数间进行比较时给出警告
    -Wsign-promo 当重载将无符号数提升为有符号数时给出警告
    -Wstack-protector 当因为某种原因堆栈保护失效时给出警告
    -Wstrict-aliasing 当代码可能破坏强重叠规则时给出警告
    -Wstrict-aliasing= 当代码可能破坏强重叠规则时给出警告
    -Wstrict-null-sentinel 将未作转换的 NULL
    用作哨兵时给出警告
    -Wstrict-overflow 禁用假定有符号数溢出行为未被定义的优化
    -Wstrict-overflow= 禁用假定有符号数溢出行为未被定义的优化
    -Wstrict-prototypes 使用了非原型的函数声明时给出警告
    -Wstrict-selector-match 当备选方法的类型签字不完全匹配时给出警告
    -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))
    -Wsurprising 对“可疑”的构造给出警告
    -Wswitch 当使用枚举类型作为开关变量,没有提供
    default 分支,但又缺少某个 case
    时给出警告
    -Wswitch-default 当使用枚举类型作为开关变量,但没有提供“default”分支时给出警告
    -Wswitch-enum 当使用枚举类型作为开关变量但又缺少某个
    case 时给出警告
    -Wsync-nand 当 __sync_fetch_and_nand 和
    __sync_nand_and_fetch
    内建函数被使用时给出警告
    -Wsynth 不建议使用。此开关不起作用。
    -Wsystem-headers 不抑制系统头文件中的警告
    -Wtabs 允许使用不符合规范的制表符
    -Wtraditional 使用了传统 C
    不支持的特性时给出警告
    -Wtraditional-conversion 原型导致的类型转换与无原型时的类型转换不同时给出警告
    -Wtrampolines Warn whenever a trampoline is generated
    -Wtrigraphs 当三字母序列可能影响程序意义时给出警告
    -Wtype-limits 当由于数据类型范围限制比较结果永远为真或假时给出警告
    -Wundeclared-selector 当使用 @selector()
    却不作事先声明时给出警告
    -Wundef 当 #if
    指令中用到未定义的宏时给出警告
    -Wunderflow 数字常量表达式下溢时警告
    -Wuninitialized 自动变量未初始化时警告
    -Wunknown-pragmas 对无法识别的 pragma 加以警告
    -Wunsafe-loop-optimizations 当循环因为不平凡的假定而不能被优化时给出警告
    -Wunsuffixed-float-constants 对不带后缀的浮点常量给出警告
    -Wunused 启用所有关于“XX未使用”的警告
    -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-dummy-argument 对未使用的哑元给出警告。
    -Wunused-function 有未使用的函数时警告
    -Wunused-label 有未使用的标号时警告
    -Wunused-macros 当定义在主文件中的宏未被使用时给出警告
    -Wunused-parameter 发现未使用的函数指针时给出警告
    -Wunused-result 当一个带有 warn_unused_result
    属性的函数的调用者未使用前者的返回值时给出警告
    -Wunused-value 当一个表达式的值未被使用时给出警告
    -Wunused-variable 有未使用的变量时警告
    -Wvariadic-macros 指定 -pedantic
    时不为可变参数宏给出警告
    -Wvla 使用变长数组时警告
    -Wvolatile-register-var 当一个寄存器变量被声明为 volatile
    时给出警告
    -Wwrite-strings 在 C++
    中,非零值表示将字面字符串转换为‘char
    *’时给出警告。在 C
    中,给出相似的警告,但这种类型转换是符合
    ISO C 标准的。
    -frequire-return-statement Functions which return values must end with
    return statements

    其他编译选项

    -o 设定输出文件名
    -c 只编译,不连接.
    -E 只做预编译.
    -pipe 在多个编译过程之间使用管道.
    --version 显示版本.
    -static 静态连接.
    -ansi C 模式下支持所有 ISO C90 标准的 C 程序, C++ 模式下去除对 GNU C++ 扩展的支持(GNU扩展会与 ISO C++ 冲突)
    -std= 确定编译语言的标准,目前只在编译 C 和 C++ 时有效 -fno-asm 不将 "asm" "inline" "typeof" 作为关键字,可以用他们做变量名等. -funsigned-char 将"char"的数据类型设为"unsigned",即无符号.
    -fsigned-char 正好相反,将"char"设为"signed".
    -fsyntax-only 只检查语法错误,不做其他任何事.
    -pedantic 显示所有的 ISO C 和 ISO C++ 的警告,并且拒绝所有使用禁止扩展的程序
    -Wall 显示所有警告
    -g 将编译时的调试信息保存到本地文件中( stabs,COFF,XCOFF,DWARF)
    -ggdb 为 GDB 产生调试信息,包含 GDB 的扩展.
    -ggdb(level) 设定产生何种等级的调试信息, level 为 1-3, 1 最少,3 最多.
    -ftime-reprot 统计编译消耗的时间并显示报告.
    -fmem-report 显示所有的静态内存分配.
    -ftest-coverages 为 gcov工具产生数据文件.

    gcc 编译选项

    优化

    -O1 最小化空间 minimize space
    -Op[-] 改善浮点数一致性 improve floating-pt consistency
    -O2 最大化速度 maximize speed
    -Os 优选代码空间 favor code space
    -Oa 假设没有别名 assume no aliasing
    -Ot 优选代码速度 favor code speed
    -Ob 内联展开(默认 n=0) inline expansion (default n=0)
    -Ow 假设交叉函数别名 assume cross-function aliasing
    -Od 禁用优化(默认值) disable optimizations (default)
    -Ox 最大化选项。(-Ogityb2 -Gs) maximum opts. (-Ogityb1 -Gs)
    -Og 启用全局优化 enable global optimization
    -Oy[-] 启用框架指针省略 enable frame pointer omission
    -Oi 启用内建函数 enable intrinsic functions

    代码生成

    -G3 为 80386 进行优化 optimize for 80386
    -G4 为 80486 进行优化 optimize for 80486
    -GR[-] 启用 C++ RTTI enable C++ RTTI
    -G5 为 Pentium 进行优化 optimize for Pentium
    -G6 为 Pentium Pro 进行优化 optimize for Pentium Pro
    -GX[-] 启用 C++ 异常处理(与 -EHsc 相同) enable C++ EH (same as -EHsc)
    -EHs 启用同步 C++ 异常处理 enable synchronous C++ EH
    -GD 为 Windows DLL 进行优化 optimize for Windows DLL
    -GB 为混合模型进行优化(默认) optimize for blended model (default)
    -EHa 启用异步 C++ 异常处理 enable asynchronous C++ EH
    -Gd __cdecl 调用约定 __cdecl calling convention
    -EHc extern“C”默认为 nothrow extern "C" defaults to nothrow
    -Gr __fastcall 调用约定 __fastcall calling convention
    -Gi[-] 启用增量编译 enable incremental compilation
    -Gz __stdcall 调用约定 __stdcall calling convention
    -Gm[-] 启用最小重新生成 enable minimal rebuild
    -GA 为 Windows 应用程序进行优化 optimize for Windows Application
    -Gf 启用字符串池 enable string pooling
    -QIfdiv[-] 启用 Pentium FDIV 修复 enable Pentium FDIV fix
    -GF 启用只读字符串池 enable read-only string pooling
    -QI0f[-] 启用 Pentium 0x0f 修复 enable Pentium 0x0f fix
    -Gy 分隔链接器函数 separate functions for linker
    -GZ 启用运行时调试检查 enable runtime debug checks
    -Gh 启用钩子函数调用 enable hook function call
    -Ge 对所有函数强制堆栈检查 force stack checking for all funcs
    -Gs[num] 禁用堆栈检查调用 disable stack checking calls

    输出文件

    -Fa[file] 命名程序集列表文件 name assembly listing file
    -Fo 命名对象文件 name object file
    -FA[sc] 配置程序集列表 configure assembly listing
    -Fp 命名预编译头文件 name precompiled header file
    -Fd[file] 命名 .PDB 文件 name .PDB file
    -Fr[file] 命名源浏览器文件 name source browser file
    -Fe 命名可执行文件 name executable file
    -FR[file] 命名扩展 .SBR 文件 name extended .SBR file
    -Fm[file] 命名映射文件 name map file

    预处理器

    -FI 命名强制包含文件 name forced include file
    -C 不吸取注释 don't strip comments
    -U 移除预定义宏 remove predefined macro
    -D{=|#} 定义宏 define macro
    -u 移除所有预定义宏 remove all predefined macros
    -E 将预处理定向到标准输出 preprocess to stdout
    -I 添加到包含文件的搜索路径 add to include search path
    -EP 将预处理定向到标准输出,不要带行号 preprocess to stdout, no #line
    -X 忽略“标准位置” ignore "standard places"
    -P 预处理到文件 preprocess to file

    语言

    -Zi 启用调试信息 enable debugging information
    -Zl 忽略 .OBJ 中的默认库名 omit default library name in .OBJ
    -ZI 启用调试信息的“编辑并继续”功能 enable Edit and Continue debug info
    -Zg 生成函数原型 generate function prototypes
    -Z7 启用旧式调试信息 enable old-style debug info
    -Zs 只进行语法检查 syntax check only
    -Zd 仅要行号调试信息 line number debugging info only
    -vd{0|1} 禁用-启用 vtordisp disable-enable vtordisp
    -Zp[n] 在 n 字节边界上包装结构 pack structs on n-byte boundary
    -vm 指向成员的指针类型 type of pointers to members
    -Za 禁用扩展(暗指 -Op) disable extensions (implies -Op)
    -noBool 禁用“bool”关键字 disable "bool" keyword
    -Ze 启用扩展(默认) enable extensions (default)

    杂项

    -?, -help 打印此帮助消息 print this help message
    -c 只编译,不链接 compile only, no link
    -W 设置警告等级(默认 n=1) set warning level (default n=1)
    -H 最大化外部名称长度 max external name length
    -J 默认 char 类型是 unsigned default char type is unsigned
    -nologo 取消显示版权消息 suppress copyright message
    -WX 将警告视为错误 treat warnings as errors
    -Tc 将文件编译为 .c compile file as .c
    -Yc[file] 创建 .PCH 文件 create .PCH file
    -Tp 将文件编译为 .cpp compile file as .cpp
    -Yd 将调试信息放在每个 .OBJ 中 put debug info in every .OBJ
    -TC 将所有文件编译为 .c compile all files as .c
    -TP 将所有文件编译为 .cpp compile all files as .cpp
    -Yu[file] 使用 .PCH 文件 use .PCH file
    -V 设置版本字符串 set version string
    -YX[file] 自动的 .PCH 文件 automatic .PCH
    -w 禁用所有警告 disable all warnings
    -Zm 最大内存分配(默认为 %) max memory alloc (% of default)

    链接

    -MD 与 MSVCRT.LIB 链接 link with MSVCRT.LIB
    -MDd 与 MSVCRTD.LIB 调试库链接 link with MSVCRTD.LIB debug lib
    -ML 与 LIBC.LIB 链接 link with LIBC.LIB
    -MLd 与 LIBCD.LIB 调试库链接 link with LIBCD.LIB debug lib
    -MT 与 LIBCMT.LIB 链接 link with LIBCMT.LIB
    -MTd 与 LIBCMTD.LIB 调试库链接 link with LIBCMTD.LIB debug lib
    -LD 创建 .DLL Create .DLL
    -F 设置堆栈大小 set stack size
    -LDd 创建 .DLL 调试库 Create .DLL debug libary
    -link [链接器选项和库] [linker options and libraries]

  • 相关阅读:
    iOS_SN_地图的使用(3)
    iOS_SN_地图的使用(2)
    iOS_SN_百度地图基本使用(1)
    iOS_SN_CoreData(二)
    iOS_SN_CoreDate(一)封装使用
    iOS_SN_UITableView的优化
    阿里云 单表备份 恢复
    svn 彻底删除文件、文件夹
    @去除
    服务器安全保护
  • 原文地址:https://www.cnblogs.com/ZhaoxiCheung/p/man-gcc.html
Copyright © 2011-2022 走看看