转载自: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]

(转载)gcc编译选项总结的更多相关文章

  1. 2015-08-26: GCC编译选项(转载)

    gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告:           -Waddress -Warray-bounds (only with -O2) ...

  2. GCC编译选项

    一.看例子分析gcc 的编译选项 gcc -o hello hello.c -I /home/hello/include -L /home/hello/lib -lworld 1.-I /home/h ...

  3. GCC 编译选项

    http://www.cnblogs.com/xmphoenix/archive/2011/03/21/1989944.html GCC 编译选项(转) gcc提供了大量的警告选项,对代码中可能存在的 ...

  4. 用于阻止缓冲区溢出攻击的 Linux 内核参数与 gcc 编译选项

    先来看看基于 Red Hat 与 Fedora 衍生版(例如 CentOS)系统用于阻止栈溢出攻击的内核参数,主要包含两项: kernel.exec-shield 可执行栈保护,字面含义比较“绕”, ...

  5. gcc编译选项汇集

    gcc -g 调试选项(DEBUGGING OPTION)GNU CC拥有许多特别选项,既可以调试用户的程序,也可以对GCC排错: -g 以操作系统的本地格式(stabs, COFF, XCOFF,或 ...

  6. <转载>gcc/g++编译

    转载于:http://www.cnblogs.com/yc_sunniwell/archive/2010/07/22/1782678.html 1. gcc/g++在执行编译工作的时候,总共需要4步 ...

  7. GCC编译选项 -OX[转]

    作者:知乎用户链接:https://www.zhihu.com/question/27090458/answer/137944410来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  8. [小技巧] gcc 编译选项-###

    原文译至:http://elinux.org/GCC_Tips 的一小部分. -###编译选项用于查看编译的过程 gcc -### <你的命令行的其他部分放在这里> 你运行的GCC其是一系 ...

  9. GCC 编译选项(转)

    转:http://www.cnblogs.com/xmphoenix/archive/2011/03/21/1989944.html gcc提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常 ...

随机推荐

  1. event对象中offsetX,clientX,pageX,screenX的区别

    1.offsetXoffset意为偏移量,是事件对象距左上角为参考原点的距离.以元素盒子模型的内容区域的左上角为参考点.不包括border.2.clientX事件对象相对于浏览器窗口可视区域的X,Y坐 ...

  2. web性能优化--减少客户端请求数(一)

    多图标合并,用css分隔 设置较长时间的过期时间 合并多个css文件 合并多个js文件 根据域名划分内容 首先介绍一款速度测试工具:webpagetest(填上url,username,passwor ...

  3. 在vue组件中使用vuex的state状态对象的5种方式

    下面是store文件夹下的state.js和index.js内容 //state.js const state = { headerBgOpacity:0, loginStatus:0, count: ...

  4. 【ZJOI2009】狼和羊的故事

    题目 "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" Orez听到这首歌,心想:狼和羊如此和谐,为什么不尝试羊狼合养呢?说干就干! ...

  5. 【leetcode】1227. Airplane Seat Assignment Probability

    题目如下: n passengers board an airplane with exactly n seats. The first passenger has lost the ticket a ...

  6. mysql 发现 navicat 可以远程连接,代码无法远程连接

    navicat可以远程连接, root账号也可以用代码连接. 其他的用户无法远程连接. 原因: 1.先检查下 mysql数据库里面 的 servers 表是否存在. 2.更新或者创建用户之后 使用:  ...

  7. void 运算符和 逗号运算符

    一.void 运算符 void 运算符的作用目的是 执行一个表达式,但是不用返回任何值,或者是返回undefined void 本身就有 无效.空的 的意思. void运算符的用法: 1.不加括号的写 ...

  8. 使用 CSS 显示 XML

    通过使用 CSS,可为 XML 文档添加显示信息. 使用 CSS 显示您的 XML? 使用 CSS 来格式化 XML 文档是有可能的. 下面的例子就是关于如何使用 CSS 样式表来格式化 XML 文档 ...

  9. Python稀疏矩阵运算

    import numpy as np import scipy import time import scipy.sparse as sparse t = [1]+[0]*4999 a = scipy ...

  10. metrics+spring+influxdb

    https://www.cnblogs.com/lixyu/p/9337055.html