只激活预处理。该选项不生成文件。如果需要,可以将其输出重定向到一个文件里面.
例子用法:
gcc -E hello.c > hello.E
-S
激活预处理和编译,即将文件编译为汇编代码。
例子用法
gcc -S hello.c
输出为.s的汇编文件
-c
激活预处理,编译,和汇编,即将文件编译为。o文件
例子用法:
gcc -c hello.c
输出为.o的目标文件
-x language
设定文件所使用的语言,使后缀名无效,对以后的多个有效. 根据约定,C语言的后缀名称是.c,而C++的后缀名是.C或者.cpp. 这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。
可以使用的参数有:
`c'', `objective-c'', `c-header'', `c++'', `cpp-output'', `assembler'', and `assembler-with-cpp''.
例子用法:
gcc -x c hello.pig
-x none filename
关掉上一个选项,即让gcc根据文件名后缀,自动识别文件类型
例子用法:
gcc -x c hello.pig -x none hello2.c
-o
指定目标名称,缺省值是a.out
例子用法
gcc -o hello hello.c
-Dmacro
相当于C语言中的#define macro
-Dmacro=defn
相当于C语言中的#define macro=defn
-Umacro
相当于C语言中的#undef macro
-C
在预处理的时候,不删除注释信息,一般和-E使用,如果需要分析程序,可以使用该选项
-M
生成文件关联的信息,包含目标文件所依赖的所有源代码
例子用法:
gcc -M hello.c
hello.o: hello.c /usr/include/stdio.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/wordsize.h \
/usr/include/bits/typesizes.h /usr/include/libio.h \
/usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \
/usr/include/gconv.h \
/usr/lib/gcc/i386-redhat-linux/3.4.6/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h
-MM
和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系
-MD
和-M相同,但是输出将导入到.d的文件里面
-MMD
和-MM相同,但是输出将导入到.d的文件里面
-Wa,option
此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
-Wl.option
此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.
-O0
-O1
-O2
-O3
编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高(建议使用-O2)
-g1
-g2
-g3
指示编译器在编译的时候产生调试信息,级别越高,产生的调试信息越详细(建议使用-g3)
-ggdb
此选项将尽可能的生成gdb的可以使用的调试信息
-static
此选项将禁止使用动态库,因此编译出来的目标文件一般比较大,而且不需要动态连接库就可以运行.
-share
此选项将尽量使用动态库,因此生成文件比较小,但是需要系统的动态库
-I
指定包含头文件的路径
-L
指定动态度的路径
-Wall
显示所有的警告信息
-Werror
将警告当作错误处理,即编译中遇到警告时,编译器即报错,并停止编译