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手册