g++编译选项

来源:互联网 发布:开机时windows错误恢复 编辑:程序博客网 时间:2024/06/05 09:43
gcc and g++分别是gnu的c & c++编译器  

gcc/g++在执行编译工作的时候,总共需要4步  

1.预处理,生成.i的文件  
2.将预处理后的文件不转换成汇编语言,生成文件.s  
3.有汇编变为目标代码(机器代码)生成.o的文件  
4.连接目标代码,生成可执行程序  


[参数详解]  

-x language filename   
   设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根  
   据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果  
   你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这  
   个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数  
   的使用。  
   可以使用的参数吗有下面的这些  
     `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  
    
-c   
  只激活预处理,编译,和汇编,也就是他只把程序做成obj文件  
  例子用法:  
  gcc -c hello.c  
  他将生成.o的obj文件   

-S  
  只激活预处理和编译,就是指把文件编译成为汇编代码。  
  例子用法  
  gcc -S hello.c  
  他将生成.s的汇编代码,你可以用文本编辑器察看  

-E  
  只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里  
  面.  
  例子用法:  
  gcc -E hello.c > pianoapan.txt  
  gcc -E hello.c | more  
  慢慢看吧,一个hello word 也要与处理成800行的代码  

-o  
  制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果  
  你和我有同感,改掉它,哈哈  
  例子用法  
  gcc -o hello.exe hello.c (哦,windows用习惯了)  
  gcc -o hello.asm -S hello.c  

-pipe  
  使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问  
  题  
  gcc -pipe -o hello.exe hello.c  

-ansi  
  关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一  
  些asm inline typeof关键字,以及UNIX,vax等预处理宏,  

-fno-asm  
  此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作  
  关键字。  
      
-fno-strict-prototype  
  只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式  
  的对参数的个数和类型说明,而不是没有参数.  
  而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说  
  明的类型  
    
-fthis-is-varialble  
  就是向传统c++看齐,可以使用this当一般变量使用.  
    
-fcond-mismatch  
  允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型  
    
-funsigned-char  
-fno-signed-char  
-fsigned-char  
-fno-unsigned-char  
  这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前  
  两个参数)或者 signed char(后两个参数)  
    
-include file  
  包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以  
  用它设定,功能就相当于在代码中使用#include<filename>  
  例子用法:  
  gcc hello.c -include /root/pianopan.h  
    
-imacros file  
  将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件  
  中  
    
-Dmacro  
  相当于C语言中的#define macro  
    
-Dmacro=defn  
  相当于C语言中的#define macro=defn  
    
-Umacro  
  相当于C语言中的#undef macro  

-undef  
  取消对任何非标准宏的定义  
    
-Idir  
  在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头  
  文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他  
  回先在你所制定的目录查找,然后再按常规的顺序去找.  
  对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系  
  统的缺省的头文件目录查找  
    
-I-  
  就是取消前一个参数的功能,所以一般在-Idir之后使用  
    
-idirafter dir  
  在-I的目录里面查找失败,讲到这个目录里面查找.  
    
-iprefix prefix  
-iwithprefix dir  
  一般一起使用,当-I的目录查找失败,会到prefix+dir下查找  
    
-nostdinc  
  使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确  
  限定头文件的位置  
    
-nostdin C++  
  规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建  
  libg++库使用  
    
-C  
  在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很  
  方便的  
    
-M  
  生成文件关联的信息。包含目标文件所依赖的所有源代码  
  你可以用gcc -M hello.c来测试一下,很简单。  
    
-MM  
  和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。  
    
-MD  
  和-M相同,但是输出将导入到.d的文件里面  
    
-MMD  
  和-MM相同,但是输出将导入到.d的文件里面  
    
-Wa,option  
  此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选  
  项,然后传递给会汇编程序  
    
-Wl.option  
  此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选  
  项,然后传递给会连接程序.  
    

-llibrary   
  制定编译的时候使用的库  
  例子用法  
  gcc -lcurses hello.c  
  使用ncurses库编译程序  
    
-Ldir  
  制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然  
  编译器将只在标准库的目录找。这个dir就是目录的名称。  
    
-O0  
-O1  
-O2  
-O3  
  编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最  
  高    
    
-g  
  只是编译器,在编译的时候,产生条是信息。  
    
-gstabs  
  此选项以stabs格式声称调试信息,但是不包括gdb调试信息.  
    
-gstabs+  
  此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.  
    
-ggdb  
  此选项将尽可能的生成gdb的可以使用的调试信息. 
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 开票数量比入库数量少怎么办 我贷款的app忘了怎么办 网贷名字忘了怎么办 附件太大邮件发不出去怎么办 孩子出生足印单子丢了怎么办 保险名字写错了怎么办 行驶证和身份证名字不一样怎么办 上户后发现合格证和车不一样怎么办 新车上户重量不一样怎么办 医保卡和身份证名字不一样怎么办 保险标志保险卡都没给怎么办 新买的电动自行车不符合标准怎么办 电费的户号12位怎么办? 买到过期的药品怎么办 淘宝代销宝贝信息不全怎么办 en和eng读不明显怎么办 快递收件人填错手机号没收到怎么办 快递收件人电话写错了怎么办 收件人电话写错了怎么办 大货要出货了数量错误怎么办 手被烫伤留疤怎么办 cbg被下单不能改价怎么办 浪琴手表日期中午跳怎么办 社保一体卡丢失了怎么办 京东付款七天不发货怎么办 电动车电机锁钥匙丢了怎么办 电瓶车锁钥匙丢了怎么办 苹果平板ld忘了怎么办 平板版本太低6.0怎么办 ios平板版本太低怎么办 微信公众号重名怎么办 发票规格型号填错了怎么办 鲁大师检测硬盘有问题怎么办 英文成绩单翻译错了怎么办 川航订机票名字写错了怎么办 亚航电子登机牌没有保存怎么办 cfa考试准考证名字有错怎么办 火车票护照号错了怎么办 国际机票名字错一个字怎么办 国际机票名字拼音错了怎么办 订机票名字写错了怎么办