GCC使用简介

来源:互联网 发布:淘宝二级页面设计 编辑:程序博客网 时间:2024/06/07 10:17

C程序中的文件名后缀

扩展名 文件内容 .a 静态对象库(文档) .c C语言源代码 .h C语言源代码的头文件 .i 无需处理的C语言源代码文件,编译过程的中间产物 .o 目标文件,编译过程的中间产物 .s 汇编语言代码(assembly language code),编译过程的中间产物 .so 共享对象库(shared object library)

编译选项

  • -o:指定编译程序输出的可执行程序名
  • -c:编译源代码,但跳过将目标文件连接到可执行程序这一步,输出文件与输入文件名称相同但以.o为后缀,可以用-o选项修改输出文件名称
  • -E:对源代码进行预处理并输出到标准输出,可以用重定向导出,比如gcc -E test.c > output.txt
  • -S:编译程序生成汇编语言代码,编译后生成.s文件
  • -g:产生GDB调试所需要的信息
  • -O:对程序进行优化编译,链接,耗时会有所增加
  • -O2:更好的优化编译,链接,耗时会更长

警告选项

  • -pedantic:打开完全服从ANSI C标准所需的全部警告诊断,拒绝接受采用了被禁止的语法扩展的程序
  • -Wunused:如果某个局部变量除了声明就没再使用,或者声明了静态函数但是没有定义,或者某条语句的运算结果显然没有使用, 编译器就发出警告
  • -Wshadow:一旦某个局部变量屏蔽了另一个局部变量,编译器就发出警告
  • -Wconversion: 如果某函数原形导致的类型转换和无函数原形时的类型转换不同,编译器就发出警告.这里包括定点数和浮点数的 互相转换,改变定点数的宽度或符号,除非他们和缺省声明(default promotion)相同
  • -Werror:把警告当作是错误,出现任何警告即放弃编译
  • -Wextra:提供额外的警告信息
  • -Wall:打开绝大部分警告,通常可以使用-Wall开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat
    -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration
    -Wcomment -Wformat -Wmain (only for C/ObjC and unless
    -ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses
    -Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point
    -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1
    -Wswitch -Wtrigraphs -Wuninitialized (only with -O1 and above)
    -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused-value
    -Wunused-variable

参考资料:
《GCC技术参考大全》
GNU GCC手册

原创粉丝点击