gcc编译选项总结

简介:

常用编译选项

  1. #--------------------------------------------------------------------------------  
  2. [介绍]   
  3.   
  4. gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步   
  5.   
  6. 1.预处理,生成.i的文件[预处理器cpp]   
  7. 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]   
  8. 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]   
  9. 4.连接目标代码,生成可执行程序[链接器ld]   
  10. #--------------------------------------------------------------------------------  
  11. #  
  12. #  
  13. #  
  14. #  
  15. #  
  16. #--------------------------------------------------------------------------------  
  17. gcc 命令的常用选项   
  18. 选项 解释   
  19. -ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,   
  20. 例如 asm 或 typeof 关键词。   
  21. -c 只编译并生成目标文件。   
  22. -DMACRO 以字符串“1”定义 MACRO 宏。   
  23. -DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。   
  24. -E 只运行 C 预编译器。   
  25. -g 生成调试信息。GNU 调试器可利用该信息。   
  26. -IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。   
  27. -LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。   
  28. -lLIBRARY 连接时搜索指定的函数库LIBRARY。   
  29. -m486 针对 486 进行代码优化。   
  30. -o FILE 生成指定的输出文件。用在生成可执行文件时。   
  31. -O0 不进行优化处理。   
  32. -O 或 -O1 优化生成代码。   
  33. -O2 进一步优化。   
  34. -O3 比 -O2 更进一步优化,包括 inline 函数。   
  35. -shared 生成共享目标文件。通常用在建立共享库时。   
  36. -static 禁止使用共享连接。   
  37. -UMACRO 取消对 MACRO 宏的定义。   
  38. -w 不生成任何警告信息。   
  39. -Wall 生成所有警告信息。  
  40. #--------------------------------------------------------------------------------  
  41. #  
  42. #  
  43. #  
  44. #  
  45. #  
  46. #--------------------------------------------------------------------------------  
  47. [参数详解]   
  48. -x language filename   
  49.   设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后   
  50. 缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀   
  51. 名是.pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了   
  52. 下一个参数的使用。   
  53.   可以使用的参数吗有下面的这些   
  54.   `c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `a   
  55. ssembler-with-cpp'.   
  56.   看到英文,应该可以理解的。   
  57.   例子用法:   
  58.   gcc -x c hello.pig   
  59.      
  60. -x none filename   
  61.   关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型   
  62.   例子用法:   
  63.   gcc -x c hello.pig -x none hello2.c   
  64.      
  65. -c   
  66.   只激活预处理,编译,和汇编,也就是他只把程序做成obj文件   
  67.   例子用法:   
  68.   gcc -c hello.c   
  69.   他将生成.o的obj文件   
  70. -S   
  71.   只激活预处理和编译,就是指把文件编译成为汇编代码。   
  72.   例子用法   
  73.   gcc -S hello.c   
  74.   他将生成.s的汇编代码,你可以用文本编辑器察看   
  75. -E   
  76.   只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.   
  77.   例子用法:   
  78.   gcc -E hello.c > pianoapan.txt   
  79.   gcc -E hello.c | more   
  80.   慢慢看吧,一个hello word 也要与处理成800行的代码   
  81. -o   
  82.   制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感   
  83. ,改掉它,哈哈   
  84.   例子用法   
  85.   gcc -o hello.exe hello.c (哦,windows用习惯了)   
  86.   gcc -o hello.asm -S hello.c   
  87. -pipe   
  88.   使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题   
  89.   gcc -pipe -o hello.exe hello.c   
  90. -ansi   
  91.   关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inl   
  92. ine typeof关键字,以及UNIX,vax等预处理宏,   
  93. -fno-asm   
  94.   此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。   
  95.        
  96. -fno-strict-prototype   
  97.   只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数   
  98. 的个数和类型说明,而不是没有参数.   
  99.   而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说明的类型   
  100.   
  101.      
  102. -fthis-is-varialble   
  103.   就是向传统c++看齐,可以使用this当一般变量使用.   
  104.      
  105. -fcond-mismatch   
  106.   允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型   
  107.      
  108. -funsigned-char   
  109. -fno-signed-char   
  110. -fsigned-char   
  111. -fno-unsigned-char   
  112.   这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参   
  113. 数)或者 signed char(后两个参数)   
  114.      
  115. -include file   
  116.   包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设   
  117. 定,功能就相当于在代码中使用#include<filename>   
  118.   例子用法:   
  119.   gcc hello.c -include /root/pianopan.h   
  120.      
  121. -imacros file   
  122.   将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中   
  123.      
  124. -Dmacro   
  125.   相当于C语言中的#define macro   
  126.      
  127. -Dmacro=defn   
  128.   相当于C语言中的#define macro=defn   
  129.      
  130. -Umacro   
  131.   相当于C语言中的#undef macro   
  132. -undef   
  133.   取消对任何非标准宏的定义   
  134.      
  135. -Idir   
  136.   在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如   
  137. 果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他   
  138.   回先在你所制定的目录查找,然后再按常规的顺序去找.   
  139.   对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺   
  140. 省的头文件目录查找   
  141.      
  142. -I-   
  143.   就是取消前一个参数的功能,所以一般在-Idir之后使用   
  144.      
  145. -idirafter dir   
  146.   在-I的目录里面查找失败,讲到这个目录里面查找.   
  147.      
  148. -iprefix prefix   
  149. -iwithprefix dir   
  150.   一般一起使用,当-I的目录查找失败,会到prefix+dir下查找   
  151.      
  152. -nostdinc   
  153.   使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头   
  154. 文件的位置   
  155.      
  156. -nostdin C++   
  157.   规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创libg++库   
  158. 使用   
  159.      
  160. -C   
  161.   在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的   
  162.   
  163.      
  164. -M   
  165.   生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c   
  166. 来测试一下,很简单。   
  167.      
  168. -MM   
  169.   和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。   
  170.      
  171. -MD   
  172.   和-M相同,但是输出将导入到.d的文件里面   
  173.      
  174. -MMD   
  175.   和-MM相同,但是输出将导入到.d的文件里面   
  176.      
  177. -Wa,option   
  178.   此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然   
  179. 后传递给会汇编程序   
  180.      
  181. -Wl.option   
  182.   此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然   
  183. 后传递给会连接程序.   
  184.      
  185. -llibrary   
  186.   制定编译的时候使用的库   
  187.   例子用法   
  188.   gcc -lcurses hello.c   
  189.   使用ncurses库编译程序   
  190.      
  191. -Ldir   
  192.   制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然   
  193.   编译器将只在标准库的目录找。这个dir就是目录的名称。   
  194.      
  195. -O0   
  196. -O1   
  197. -O2   
  198. -O3   
  199.   编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高    
  200.        
  201. -g   
  202.   只是编译器,在编译的时候,产生调试信息。   
  203.      
  204. -gstabs   
  205.   此选项以stabs格式声称调试信息,但是不包括gdb调试信息.   
  206.      
  207. -gstabs+   
  208.   此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.   
  209.      
  210. -ggdb   
  211.   此选项将尽可能的生成gdb的可以使用的调试信息.   
  212. -static   
  213.   此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么   
  214. 动态连接库,就可以运行.   
  215. -share   
  216.   此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.   
  217. -traditional   
  218.   试图让编译器支持传统的C语言特性   


警告信息控制选项

  1. 下列选项控制编译器警告信息:  
  2.   --all-warnings              此开关缺少可用文档  
  3.   --extra-warnings            此开关缺少可用文档  
  4.   -W                          不建议使用此开关;请改用 -Wextra  
  5.   -Wabi                       当结果与 ABI  
  6.                               相容的编译器的编译结果不同时给出警告  
  7.   -Waddress                   使用可疑的内存地址时给出警告  
  8.   -Waggregate-return          当返回结构、联合或数组时给出警告  
  9.   -Waliasing                  为可能的虚参重叠给出警告  
  10.   -Walign-commons             对 COMMON 块对齐的警告  
  11.   -Wall                       启用大部分警告信息  
  12.   -Wampersand                 若延续字符常量中缺少 & 则给出警告  
  13.   -Warray-bounds              当数组访问越界时给出警告  
  14.   -Warray-temporaries         创建临时数组时给出警告  
  15.   -Wassign-intercept          当 Objective-C  
  16.                               赋值可能为垃圾回收所介入时给出警告  
  17.   -Wattributes                当对属性的使用不合适时给出警告  
  18.   -Wbad-function-cast         当把函数转换为不兼容类型时给出警告  
  19.   -Wbuiltin-macro-redefined   当内建预处理宏未定义或重定义时给出警告  
  20.   -Wc++-compat                当在 C 语言中使用了 C 与 C++  
  21.                               交集以外的构造时给出警告  
  22.   -Wc++0x-compat              当 C++ 构造的意义在 ISO C++ 1998 和 ISO  
  23.                               C++ 200x 中不同时给出警告  
  24.   -Wcast-align                当转换指针类型导致对齐边界增长时给出警告  
  25.   -Wcast-qual                 当类型转换丢失限定信息时给出警告  
  26.   -Wchar-subscripts           当下标类型为“char”时给出警告  
  27.   -Wcharacter-truncation      对被截断的字符表达式给出警告  
  28.   -Wclobbered                 对能为"longjmp"或"vfork"所篡改的变量给出警告  
  29.   -Wcomment                   对可能嵌套的注释和长度超过一个物理行长的  
  30.                               C++ 注释给出警告  
  31.   -Wcomments                  -Wcomment 的同义词  
  32.   -Wconversion                当隐式类型转换可能改变值时给出警告  
  33.   -Wconversion-extra          对大多数隐式类型转换给出警告  
  34.   -Wconversion-null           将 NULL 转换为非指针类型时给出警告  
  35.   -Wcoverage-mismatch         Warn in case profiles in -fprofile-use do not  
  36.                               match  
  37.   -Wcpp                       Warn when a #warning directive is encountered  
  38.   -Wctor-dtor-privacy         当所有构造函数和析构函数都是私有时给出警告  
  39.   -Wdeclaration-after-statement 当声明出现在语句后时给出警告  
  40.   -Wdeprecated                使用不建议的编译器特性、类、方法或字段时给出警告  
  41.   -Wdeprecated-declarations   对 __attribute__((deprecated)) 声明给出警告  
  42.   -Wdisabled-optimization     当某趟优化被禁用时给出警告  
  43.   -Wdiv-by-zero               对编译时发现的零除给出警告  
  44.   -Wdouble-promotion          对从“float”到“double”的隐式转换给出警告  
  45.   -Weffc++                    对不遵循《Effetive  
  46.                               C++》的风格给出警告  
  47.   -Wempty-body                当 if 或 else 语句体为空时给出警告  
  48.   -Wendif-labels              当 #elif 和 #endif  
  49.                               后面跟有其他标识符时给出警告  
  50.   -Wenum-compare              对不同枚举类型之间的比较给出警告  
  51.   -Werror-implicit-function-declaration 不建议使用此开关;请改用  
  52.                               -Werror=implicit-function-declaration  
  53.   -Wextra                     打印额外(可能您并不想要)的警告信息  
  54.   -Wfloat-equal               当比较浮点数是否相等时给出警告  
  55.   -Wformat                    对 printf/scanf/strftime/strfmon  
  56.                               中的格式字符串异常给出警告  
  57.   -Wformat-contains-nul       当格式字符串包含 NUL 字节时给出警告  
  58.   -Wformat-extra-args         当传递给格式字符串的参数太多时给出警告  
  59.   -Wformat-nonliteral         当格式字符串不是字面值时给出警告  
  60.   -Wformat-security           当使用格式字符串的函数可能导致安全问题时给出警告  
  61.   -Wformat-y2k                当 strftime 格式给出 2  
  62.                               位记年时给出警告  
  63.   -Wformat-zero-length        对长度为 0 的格式字符串给出警告  
  64.   -Wformat=                   此开关缺少可用文档  
  65.   -Wignored-qualifiers        当类型限定符被忽略时给出警告。  
  66.   -Wimplicit                  对隐式函数声明给出警告  
  67.   -Wimplicit-function-declaration 对隐式函数声明给出警告  
  68.   -Wimplicit-int              当声明未指定类型时给出警告  
  69.   -Wimplicit-interface        对带有隐式接口的调用给出警告  
  70.   -Wimplicit-procedure        对没有隐式声明的过程调用给出警告  
  71.   -Winit-self                 对初始化为自身的变量给出警告。  
  72.   -Winline                    当内联函数无法被内联时给出警告  
  73.   -Wint-to-pointer-cast       当将一个大小不同的整数转换为指针时给出警告  
  74.   -Wintrinsic-shadow          如果用户过程有与内建过程相同的名字则警告  
  75.   -Wintrinsics-std            当内建函数不是所选标准的一部分时给出警告  
  76.   -Winvalid-offsetof          对“offsetof”宏无效的使用给出警告  
  77.   -Winvalid-pch               在找到了 PCH  
  78.                               文件但未使用的情况给出警告  
  79.   -Wjump-misses-init          当跳转略过变量初始化时给出警告  
  80.   -Wlarger-than-              此开关缺少可用文档  
  81.   -Wlarger-than=<N>           当目标文件大于 N 字节时给出警告  
  82.   -Wline-truncation           对被截断的源文件行给出警告  
  83.   -Wlogical-op                当逻辑操作结果似乎总为真或假时给出警告  
  84.   -Wlong-long                 当使用 -pedantic 时不对“long  
  85.                               long”给出警告  
  86.   -Wmain                      对可疑的“main”声明给出警告  
  87.   -Wmissing-braces            若初始值设定项中可能缺少花括号则给出警告  
  88.   -Wmissing-declarations      当全局函数没有前向声明时给出警告  
  89.   -Wmissing-field-initializers 若结构初始值设定项中缺少字段则给出警告  
  90.   -Wmissing-format-attribute  当函数可能是 format  
  91.                               属性的备选时给出警告  
  92.   -Wmissing-include-dirs      当用户给定的包含目录不存在时给出警告  
  93.   -Wmissing-noreturn          当函数可能是 __attribute__((noreturn))  
  94.                               的备选时给出警告  
  95.   -Wmissing-parameter-type    K&R  
  96.                               风格函数参数声明中未指定类型限定符时给出警告  
  97.   -Wmissing-prototypes        全局函数没有原型时给出警告  
  98.   -Wmudflap                   当构造未被 -fmudflap 处理时给出警告  
  99.   -Wmultichar                 使用多字节字符集的字符常量时给出警告  
  100.   -Wnested-externs            当“extern”声明不在文件作用域时给出警告  
  101.   -Wnoexcept                  Warn when a noexcept expression evaluates to  
  102.                               false even though the expression can't actually  
  103.                               throw  
  104.   -Wnon-template-friend       在模板内声明未模板化的友元函数时给出警告  
  105.   -Wnon-virtual-dtor          当析构函数不是虚函数时给出警告  
  106.   -Wnonnull                   当将 NULL 传递给需要非 NULL  
  107.                               的参数的函数时给出警告  
  108.   -Wnormalized=<id|nfc|nfkc>  对未归一化的 Unicode 字符串给出警告  
  109.   -Wold-style-cast            程序使用 C  
  110.                               风格的类型转换时给出警告  
  111.   -Wold-style-declaration     对声明中的过时用法给出警告  
  112.   -Wold-style-definition      使用旧式形参定义时给出警告  
  113.   -Woverflow                  算术表示式溢出时给出警告  
  114.   -Woverlength-strings        当字符串长度超过标准规定的可移植的最大长度时给出警告  
  115.   -Woverloaded-virtual        重载虚函数名时给出警告  
  116.   -Woverride-init             覆盖无副作用的初始值设定时给出警告  
  117.   -Wpacked                    当 packed  
  118.                               属性对结构布局不起作用时给出警告  
  119.   -Wpacked-bitfield-compat    当紧实位段的偏移量因 GCC 4.4  
  120.                               而改变时给出警告  
  121.   -Wpadded                    当需要填补才能对齐结构成员时给出警告  
  122.   -Wparentheses               可能缺少括号的情况下给出警告  
  123.   -Wpmf-conversions           当改变成员函数指针的类型时给出警告  
  124.   -Wpointer-arith             当在算术表达式中使用函数指针时给出警告  
  125.   -Wpointer-sign              赋值时如指针符号不一致则给出警告  
  126.   -Wpointer-to-int-cast       将一个指针转换为大小不同的整数时给出警告  
  127.   -Wpragmas                   对错误使用的 pragma 加以警告  
  128.   -Wproperty-assign-default   Warn if a property for an Objective-C object has  
  129.                               no assign semantics specified  
  130.   -Wprotocol                  当继承来的方法未被实现时给出警告  
  131.   -Wreal-q-constant           Warn about real-literal-constants with 'q'  
  132.                               exponent-letter  
  133.   -Wredundant-decls           对同一个对象多次声明时给出警告  
  134.   -Wreorder                   编译器将代码重新排序时给出警告  
  135.   -Wreturn-type               当 C  
  136.                               函数的返回值默认为“int”,或者 C++  
  137.                               函数的返回类型不一致时给出警告  
  138.   -Wselector                  当选择子有多个方法时给出警告  
  139.   -Wsequence-point            当可能违反定序点规则时给出警告  
  140.   -Wshadow                    当一个局部变量掩盖了另一个局部变量时给出警告  
  141.   -Wsign-compare              在有符号和无符号数间进行比较时给出警告  
  142.   -Wsign-promo                当重载将无符号数提升为有符号数时给出警告  
  143.   -Wstack-protector           当因为某种原因堆栈保护失效时给出警告  
  144.   -Wstrict-aliasing           当代码可能破坏强重叠规则时给出警告  
  145.   -Wstrict-aliasing=          当代码可能破坏强重叠规则时给出警告  
  146.   -Wstrict-null-sentinel      将未作转换的 NULL  
  147.                               用作哨兵时给出警告  
  148.   -Wstrict-overflow           禁用假定有符号数溢出行为未被定义的优化  
  149.   -Wstrict-overflow=          禁用假定有符号数溢出行为未被定义的优化  
  150.   -Wstrict-prototypes         使用了非原型的函数声明时给出警告  
  151.   -Wstrict-selector-match     当备选方法的类型签字不完全匹配时给出警告  
  152.   -Wsuggest-attribute=const   Warn about functions which might be candidates  
  153.                               for __attribute__((const))  
  154.   -Wsuggest-attribute=noreturn 当函数可能是 __attribute__((noreturn))  
  155.                               的备选时给出警告  
  156.   -Wsuggest-attribute=pure    Warn about functions which might be candidates  
  157.                               for __attribute__((pure))  
  158.   -Wsurprising                对“可疑”的构造给出警告  
  159.   -Wswitch                    当使用枚举类型作为开关变量,没有提供  
  160.                               default 分支,但又缺少某个 case  
  161.                               时给出警告  
  162.   -Wswitch-default            当使用枚举类型作为开关变量,但没有提供“default”分支时给出警告  
  163.   -Wswitch-enum               当使用枚举类型作为开关变量但又缺少某个  
  164.                               case 时给出警告  
  165.   -Wsync-nand                 当 __sync_fetch_and_nand 和  
  166.                               __sync_nand_and_fetch  
  167.                               内建函数被使用时给出警告  
  168.   -Wsynth                     不建议使用。此开关不起作用。  
  169.   -Wsystem-headers            不抑制系统头文件中的警告  
  170.   -Wtabs                      允许使用不符合规范的制表符  
  171.   -Wtraditional               使用了传统 C  
  172.                               不支持的特性时给出警告  
  173.   -Wtraditional-conversion    原型导致的类型转换与无原型时的类型转换不同时给出警告  
  174.   -Wtrampolines               Warn whenever a trampoline is generated  
  175.   -Wtrigraphs                 当三字母序列可能影响程序意义时给出警告  
  176.   -Wtype-limits               当由于数据类型范围限制比较结果永远为真或假时给出警告  
  177.   -Wundeclared-selector       当使用 @selector()  
  178.                               却不作事先声明时给出警告  
  179.   -Wundef                     当 #if  
  180.                               指令中用到未定义的宏时给出警告  
  181.   -Wunderflow                 数字常量表达式下溢时警告  
  182.   -Wuninitialized             自动变量未初始化时警告  
  183.   -Wunknown-pragmas           对无法识别的 pragma 加以警告  
  184.   -Wunsafe-loop-optimizations 当循环因为不平凡的假定而不能被优化时给出警告  
  185.   -Wunsuffixed-float-constants 对不带后缀的浮点常量给出警告  
  186.   -Wunused                    启用所有关于“XX未使用”的警告  
  187.   -Wunused-but-set-parameter  Warn when a function parameter is only set,  
  188.                               otherwise unused  
  189.   -Wunused-but-set-variable   Warn when a variable is only set, otherwise unused  
  190.   -Wunused-dummy-argument     对未使用的哑元给出警告。  
  191.   -Wunused-function           有未使用的函数时警告  
  192.   -Wunused-label              有未使用的标号时警告  
  193.   -Wunused-macros             当定义在主文件中的宏未被使用时给出警告  
  194.   -Wunused-parameter          发现未使用的函数指针时给出警告  
  195.   -Wunused-result             当一个带有 warn_unused_result  
  196.                               属性的函数的调用者未使用前者的返回值时给出警告  
  197.   -Wunused-value              当一个表达式的值未被使用时给出警告  
  198.   -Wunused-variable           有未使用的变量时警告  
  199.   -Wvariadic-macros           指定 -pedantic  
  200.                               时不为可变参数宏给出警告  
  201.   -Wvla                       使用变长数组时警告  
  202.   -Wvolatile-register-var     当一个寄存器变量被声明为 volatile  
  203.                               时给出警告  
  204.   -Wwrite-strings             在 C++  
  205.                               中,非零值表示将字面字符串转换为‘char  
  206.                               *’时给出警告。在 C  
  207.                               中,给出相似的警告,但这种类型转换是符合  
  208.                               ISO C 标准的。  
  209.   -frequire-return-statement  Functions which return values must end with  
  210.                               return statements  

其他编译选项

  1. GCC编译选项  
  2.   
  3. -o 设定输出文件名   
  4. -c 只编译,不连接.   
  5. -E 只做预编译.   
  6. -pipe 在多个编译过程之间使用管道.   
  7. --version 显示版本.   
  8. -static 静态连接.   
  9. -ansi C 模式下支持所有 ISO C90 标准的 C 程序, C++ 模式下去除对 GNU C++ 扩展的支持(GNU扩展会与 ISO C++ 冲突)   
  10. -std= 确定编译语言的标准,目前只在编译 C 和 C++ 时有效 -fno-asm 不将 "asm" "inline" "typeof" 作为关键字,可以用他们做变量名等. -funsigned-char 将"char"的数据类型设为"unsigned",即无符号.   
  11. -fsigned-char 正好相反,将"char"设为"signed".   
  12. -fsyntax-only 只检查语法错误,不做其他任何事.   
  13. -pedantic 显示所有的 ISO C 和 ISO C++ 的警告,并且拒绝所有使用禁止扩展的程序   
  14. -Wall 显示所有警告   
  15. -g 将编译时的调试信息保存到本地文件中( stabs,COFF,XCOFF,DWARF)   
  16. -ggdb 为 GDB 产生调试信息,包含 GDB 的扩展.   
  17. -ggdb(level) 设定产生何种等级的调试信息, level 为 1-3, 1 最少,3 最多.   
  18. -ftime-reprot 统计编译消耗的时间并显示报告.   
  19. -fmem-report 显示所有的静态内存分配.   
  20. -ftest-coverages 为 gcov工具产生数据文件.   
  21. gcc 编译选项,翻译出来用起来方便.  
  22.   
  23.   
  24.   
  25. -优化-   
  26. -O1 最小化空间 minimize space   
  27. -Op[-] 改善浮点数一致性 improve floating-pt consistency   
  28. -O2 最大化速度 maximize speed   
  29. -Os 优选代码空间 favor code space   
  30. -Oa 假设没有别名 assume no aliasing   
  31. -Ot 优选代码速度 favor code speed   
  32. -Ob 内联展开(默认 n=0) inline expansion (default n=0)   
  33. -Ow 假设交叉函数别名 assume cross-function aliasing   
  34. -Od 禁用优化(默认值) disable optimizations (default)   
  35. -Ox 最大化选项。(-Ogityb2 -Gs) maximum opts. (-Ogityb1 -Gs)   
  36. -Og 启用全局优化 enable global optimization   
  37. -Oy[-] 启用框架指针省略 enable frame pointer omission   
  38. -Oi 启用内建函数 enable intrinsic functions  
  39.   
  40. -代码生成-   
  41. -G3 为 80386 进行优化 optimize for 80386   
  42. -G4 为 80486 进行优化 optimize for 80486   
  43. -GR[-] 启用 C++ RTTI enable C++ RTTI   
  44. -G5 为 Pentium 进行优化 optimize for Pentium   
  45. -G6 为 Pentium Pro 进行优化 optimize for Pentium Pro   
  46. -GX[-] 启用 C++ 异常处理(与 -EHsc 相同) enable C++ EH (same as -EHsc)   
  47. -EHs 启用同步 C++ 异常处理 enable synchronous C++ EH   
  48. -GD 为 Windows DLL 进行优化 optimize for Windows DLL   
  49. -GB 为混合模型进行优化(默认) optimize for blended model (default)   
  50. -EHa 启用异步 C++ 异常处理 enable asynchronous C++ EH   
  51. -Gd __cdecl 调用约定 __cdecl calling convention   
  52. -EHc extern“C”默认为 nothrow extern "C" defaults to nothrow   
  53. -Gr __fastcall 调用约定 __fastcall calling convention   
  54. -Gi[-] 启用增量编译 enable incremental compilation   
  55. -Gz __stdcall 调用约定 __stdcall calling convention   
  56. -Gm[-] 启用最小重新生成 enable minimal rebuild   
  57. -GA 为 Windows 应用程序进行优化 optimize for Windows Application   
  58. -Gf 启用字符串池 enable string pooling   
  59. -QIfdiv[-] 启用 Pentium FDIV 修复 enable Pentium FDIV fix   
  60. -GF 启用只读字符串池 enable read-only string pooling   
  61. -QI0f[-] 启用 Pentium 0x0f 修复 enable Pentium 0x0f fix   
  62. -Gy 分隔链接器函数 separate functions for linker   
  63. -GZ 启用运行时调试检查 enable runtime debug checks   
  64. -Gh 启用钩子函数调用 enable hook function call   
  65. -Ge 对所有函数强制堆栈检查 force stack checking for all funcs   
  66. -Gs[num] 禁用堆栈检查调用 disable stack checking calls  
  67.   
  68. -输出文件-   
  69. -Fa[file] 命名程序集列表文件 name assembly listing file   
  70. -Fo 命名对象文件 name object file   
  71. -FA[sc] 配置程序集列表 configure assembly listing   
  72. -Fp 命名预编译头文件 name precompiled header file   
  73. -Fd[file] 命名 .PDB 文件 name .PDB file   
  74. -Fr[file] 命名源浏览器文件 name source browser file   
  75. -Fe 命名可执行文件 name executable file   
  76. -FR[file] 命名扩展 .SBR 文件 name extended .SBR file   
  77. -Fm[file] 命名映射文件 name map file  
  78.   
  79. -预处理器-   
  80. -FI 命名强制包含文件 name forced include file   
  81. -C 不吸取注释 don't strip comments   
  82. -U 移除预定义宏 remove predefined macro   
  83. -D{=|#} 定义宏 define macro   
  84. -u 移除所有预定义宏 remove all predefined macros   
  85. -E 将预处理定向到标准输出 preprocess to stdout   
  86. -I 添加到包含文件的搜索路径 add to include search path   
  87. -EP 将预处理定向到标准输出,不要带行号 preprocess to stdout, no #line   
  88. -X 忽略“标准位置” ignore "standard places"   
  89. -P 预处理到文件 preprocess to file  
  90.   
  91. -语言-   
  92. -Zi 启用调试信息 enable debugging information   
  93. -Zl 忽略 .OBJ 中的默认库名 omit default library name in .OBJ   
  94. -ZI 启用调试信息的“编辑并继续”功能 enable Edit and Continue debug info   
  95. -Zg 生成函数原型 generate function prototypes   
  96. -Z7 启用旧式调试信息 enable old-style debug info   
  97. -Zs 只进行语法检查 syntax check only   
  98. -Zd 仅要行号调试信息 line number debugging info only   
  99. -vd{0|1} 禁用-启用 vtordisp disable-enable vtordisp   
  100. -Zp[n] 在 n 字节边界上包装结构 pack structs on n-byte boundary   
  101. -vm 指向成员的指针类型 type of pointers to members   
  102. -Za 禁用扩展(暗指 -Op) disable extensions (implies -Op)   
  103. -noBool 禁用“bool”关键字 disable "bool" keyword   
  104. -Ze 启用扩展(默认) enable extensions (default)  
  105.   
  106. - 杂项 -   
  107. -?, -help 打印此帮助消息 print this help message   
  108. -c 只编译,不链接 compile only, no link   
  109. -W 设置警告等级(默认 n=1) set warning level (default n=1)   
  110. -H 最大化外部名称长度 max external name length   
  111. -J 默认 char 类型是 unsigned default char type is unsigned   
  112. -nologo 取消显示版权消息 suppress copyright message   
  113. -WX 将警告视为错误 treat warnings as errors   
  114. -Tc 将文件编译为 .c compile file as .c   
  115. -Yc[file] 创建 .PCH 文件 create .PCH file   
  116. -Tp 将文件编译为 .cpp compile file as .cpp   
  117. -Yd 将调试信息放在每个 .OBJ 中 put debug info in every .OBJ   
  118. -TC 将所有文件编译为 .c compile all files as .c   
  119. -TP 将所有文件编译为 .cpp compile all files as .cpp   
  120. -Yu[file] 使用 .PCH 文件 use .PCH file   
  121. -V 设置版本字符串 set version string   
  122. -YX[file] 自动的 .PCH 文件 automatic .PCH   
  123. -w 禁用所有警告 disable all warnings   
  124. -Zm 最大内存分配(默认为 %) max memory alloc (% of default)  
  125.   
  126. -链接-   
  127. -MD 与 MSVCRT.LIB 链接 link with MSVCRT.LIB   
  128. -MDd 与 MSVCRTD.LIB 调试库链接 link with MSVCRTD.LIB debug lib   
  129. -ML 与 LIBC.LIB 链接 link with LIBC.LIB   
  130. -MLd 与 LIBCD.LIB 调试库链接 link with LIBCD.LIB debug lib   
  131. -MT 与 LIBCMT.LIB 链接 link with LIBCMT.LIB   
  132. -MTd 与 LIBCMTD.LIB 调试库链接 link with LIBCMTD.LIB debug lib   
  133. -LD 创建 .DLL Create .DLL   
  134. -F 设置堆栈大小 set stack size   
  135. -LDd 创建 .DLL 调试库 Create .DLL debug libary   
  136. -link [链接器选项和库] [linker options and libraries]  


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

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
3月前
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
28天前
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
54 11
|
3月前
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
33 4
|
3月前
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
81 0
|
5月前
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
|
5月前
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
157 0
|
5月前
|
C语言
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
|
6月前
|
编译器 Linux 开发工具
|
6月前
|
NoSQL 编译器 开发工具
006.gcc编译器
gcc是什么?
87 0
006.gcc编译器
|
6月前
|
存储 NoSQL 算法
从一个crash问题展开,探索gcc编译优化细节
问题分析的过程也正是技术成长之路,本文以一个gcc编译优化引发的crash为切入点,逐步展开对编译器优化细节的探索之路,在分析过程中打开了新世界的大门……