| -c | (compile) 不进行编译过程的连接步骤.编译和/或汇编源代码文件,保留扩展名.o的对象代码. |
| -Dname(=value) | 通常#define预处理指令放在头文件或者include文件中.可以在命令中实用这个选项定义一些符号名.例如,-DLinux与在include文件的 #include Linux行等价;-DMACH=i586与#define DMACH i586 等价. |
| -E | (everything) 对于源文件,值允许编译过程中的预处理,禁止所有其他步骤,将结果写到标准输出.阿斯顿约定,C语言源文件预处理后的文件扩展名为.i;C++语言源文件预处理后的文件扩展名为.ii. |
| -fpic | 使gcc生成与位置无关(position-independent)的源代码,这样的代码适于安装到共享库. |
| -writable-strings | 默认情况下,GNU C编译器将字符串常量放置在受保护的内区(protected memory)中,使得它们不会被修改.一些程序(通常时版本较老的程序)假设用户可以修改字符串常量.该选项改变了gcc的行为,因此可以修改字符串常量. |
| -g | (gdb)在对象文件中嵌入诊断信息.该信息由符号调试器(如 gdb)使用.虽然后面使用调试器才用到,但包含该选项是一种好习惯. |
| -Idirectory | 搜索标准位置之前,先在directory中查找include文件.多次给出该选项可以在多个目录下查找. |
| -larg | (首字母时小写字母l) 在/lib和/usr/lib目录中搜索名为linarg.a的库文件.如果找到该文件,gcc就直接在库内搜索需要的函数库.可将arg替换为搜索的库文件名.例如,选项-lm通常链接到标准数学库libm.a.该选项的位置很重要,通常它被放在命令行的末尾,可以多次使用该选项来搜索不同库.库按照它们在命令行上的顺序依次搜索.连接器使用库来解决命令行,库选项之前模块中未定义的符号.可使用-L选项添加其他的库路径来搜索libarg.a. |
| -Ldirectory | 为了搜索用-l选项给出的库,向要搜索的目录列表中添加directory.在搜索库的标准位置之前搜索实用-L添加到列表中的目录. |
| -o file | (output) 对连接file得到的可执行文件进行命名,而不采用默认的a.out. |
| -On | (optimize) 尽量优化编译器产生的目标代码.n的值可以是0,1,2,或者3(如果为linux内核编译代码,n就可以是06),默认值为1.较大的n值具有较好的优化结果,但会增加目标代码量和gcc运行时间.实用-O0可以关闭优化功能.当使用gcc的-O选项时,很多相关的选项可以精确地控制优化类.参见gcc的info页以获得详细信息. |
| -pedantic | GNU C编译器接收的C语言包含一些标准ANSI C语言没有特性.使用该选项强制gcc放弃C语言的扩展,接收标准C语言的特性. |
| -Q | 显示gcc编译的函数名和每次编译的统计信息. |
| -S | (suppress) 禁止编译过程中对源代码文件的汇编连接步骤.得到的汇编语言文件的扩展名为.s. |
| -traditional | 该选项使得gcc只能接受传统Kemighan和Ritchie C编译语言具有的特性,从而使用gcc可以正确编译实用传统C(标准ANSI C语言之前的C)编译的老程序. |
| -Wall | 该选项使得gcc在源文件中发现可疑的代码时给出警告.很多相关的选项可以用来更精确地控制警告信息. |