搜索
bottom↓
回复: 30

新手共享---GCC参数详解

[复制链接]

出0入0汤圆

发表于 2006-1-3 09:51:45 | 显示全部楼层 |阅读模式
[声明]  



这篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos  

命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助.  

不全的原因是,有可能我还没有看到这个参数,另一种原因是,我可能还不会用它:)  

不过,我会慢慢的补齐的.哈哈  



如果你要转在本文章请保留我的email(pianopan@beeship.com )和文章的全  

面性.   



[介绍]  

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的可以使用的调试信息.  





[参考资料]  

-Linux/UNIX高级编程  

  中科红旗软件技术有限公司编著.清华大学出版社出版  

[ChangeLog]  

-2002-08-10  

  发布最初的文档  

-2002-08-11

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2006-1-3 09:53:31 | 显示全部楼层
好東西!! 不頂不行!!

出0入0汤圆

 楼主| 发表于 2006-1-3 09:55:00 | 显示全部楼层
谢谢

其实,我现在还看不懂呢
头像被屏蔽

出0入0汤圆

发表于 2006-1-3 11:00:52 | 显示全部楼层
谢谢!即将整理到网站中。

出0入0汤圆

发表于 2006-1-4 21:24:09 | 显示全部楼层
其实像这些资料,网上是很多的,发个网址给大家参考一下,虽然是英文,但都很简单的.

http://ccrma.stanford.edu/planetccrma/man/man1/avr-g++.1.html

出0入0汤圆

发表于 2006-3-27 14:03:45 | 显示全部楼层
谢了

出0入0汤圆

发表于 2006-9-29 10:43:48 | 显示全部楼层
up

出0入0汤圆

发表于 2007-8-14 15:32:41 | 显示全部楼层
看不懂啊

我是菜鸟

出0入0汤圆

发表于 2007-8-21 10:44:51 | 显示全部楼层
这个写的挺好,感觉对我很有用,也很有价值!

出0入0汤圆

发表于 2007-9-4 16:35:10 | 显示全部楼层
收下慢慢学习,谢谢

出0入0汤圆

发表于 2007-9-16 02:11:02 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2009-10-30 08:07:59 | 显示全部楼层
真的好東西!
      謝謝

出0入0汤圆

发表于 2009-12-5 11:37:37 | 显示全部楼层
呵呵收藏!

出0入0汤圆

发表于 2009-12-5 12:33:16 | 显示全部楼层
很好!

出0入0汤圆

发表于 2009-12-5 12:59:37 | 显示全部楼层
做个记号。。

出0入0汤圆

发表于 2009-12-5 13:36:10 | 显示全部楼层
mark~!

出0入0汤圆

发表于 2009-12-5 15:08:15 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2009-12-7 11:21:53 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-7 12:17:31 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2010-5-9 18:27:05 | 显示全部楼层
谢谢,mark

出0入0汤圆

发表于 2010-5-17 22:42:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-3-21 09:38:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-20 13:05:03 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-23 09:31:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-10-24 12:52:53 | 显示全部楼层
dos下面吗?

出100入0汤圆

发表于 2011-10-25 08:35:07 | 显示全部楼层
marK

出0入0汤圆

发表于 2011-11-2 22:11:39 | 显示全部楼层
回复【17楼】nm409188284
-----------------------------------------------------------------------

不懂啊!

出0入0汤圆

发表于 2011-11-5 18:41:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-2-21 16:52:55 | 显示全部楼层
好贴不怕老呐

出0入0汤圆

发表于 2012-2-24 20:18:51 | 显示全部楼层
好帖!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 17:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表