GCC常用命令选项

来源:互联网 发布:工控机软件开发 编辑:程序博客网 时间:2024/06/06 18:12
(利用GCC生成可执行文件的处理过程大致为:GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入"#include"语句所包含的内容;接着,GCC会调用as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。)

-E
使用-E选项可以让GCC停止在预处理完成阶段(完成所有#define,#if,#include等替换),输出到标准输出,除非指定-o选项,gcc不再做更多的处理。可使用-o选项生成一个以i结尾的文件(GCC默认将.i文件看成是预处理后的C语言源代码)
 
-S
停止在汇编阶段,输出.s(汇编语言源码)但不调用as
 
-c                
停止在连接阶段,输出.o但不调用ld
 
-o FILE                
指定输出文件名。-o选项不是产生可执行二进制代码的关键选项,它只是为gcc的输出给出一个文件名
 
-DFOO=BAR        
在命令行定义预处理宏FOO,其值为BAR
 
-IDIRNAME        
将DIRNAME加入到头文件的搜索目录列表中
 
-LDIRNAME        
将DIRNAME加入到库文件的搜索目录列表中,缺省情况下gcc 只链接共享库
 
-static                
链接静态库,即执行静态链接,默认情况下,GCC在链接时优先使用动态链接库
 
-lFOO                
链接名为libFOO的函数库
 
-g                
GCC在产生调试符号时,同样采用了分级的思路,开发人员可以通过在-g选项后附加数字1、2或3来指定在代码中加入调试信息 的多少。默认的级别是2(-g2),此时产生的调试信息包括扩展的符号表、行号、局部或外部变量信息。级别3(-g3)包含级别2中的所有调试信息,以及源代码中定义的宏。级别1(-g1)不包含局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储之用。回溯跟踪指的是监视程序在运行过程中的函数调用历史,堆栈转储则是一种以原始的十六进制格式保存程序执行环境的方法,两者都是经常用到的调试手段
 
-ggdb                
在可执行程序中包含只有GNU debugger才能使别的达两条是信息
 
-On(n=1,2,3)                
使用编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。通常来说,数字越大优化的等级越高,同时也就意味着程序的运行速度越快。在linux下一般使用-O2选项,因为它在优化长度、编译时间和代码大小之间,取得了一个比较理想的平衡点
 
-ansi                
支持ANSI/ISO C的标准语法,取消GNU的语法扩展中与该标准有冲突的部分
(但这一选项并不能保证生成ANSI兼容的代码)
 
-pedantic        
允许发出ANSI/ISO C标准所列出的所有警告
 
-pedantic -errors        
允许发出ANSI/ISO C标准所列出的所有错误
 
-traditional       
支持Kernighan & Ritchie C语法(如用旧式语法定义函数)
 
-w                 
关闭所有警告,建议不要使用此项
 
-Wall                
允许发出gcc能提供的所有有用的警告,也可以用-W(warning)来标记指定的警告
 
-werror                
把所有警告转换为错误,以在警告发生时中止编译程       
                      
-MM                
输出一个make兼容的相关列表
 
-x language
指定编程语言language,如C,C++,Java,Ada,F77,Assembler等
 
-v                
显示在编译过程的每一步中用到的命令
 
更详细内容,请参见man gcc.
0 0