Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2038716
  • 博文数量: 414
  • 博客积分: 10312
  • 博客等级: 上将
  • 技术积分: 4921
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-31 01:49
文章分类

全部博文(414)

文章存档

2011年(1)

2010年(29)

2009年(82)

2008年(301)

2007年(1)

分类: C/C++

2008-04-07 22:12:08

BUILD = gcc -O2 -ansi -Wall -Wstrict-prototypes -pedantic -o

COMPILE = gcc -O2 -ansi -Wall -Wstrict-prototypes -pedantic -c -o

STRIP = strip -s

-ansi

   支持符合ANSI标准的C程序.

   这样就会关闭GNU C中某些不兼容ANSI C的特性,例如asm, inlinetypeof关键字,以及诸如unixvax这些表明当前系统类型的预定义宏.同时开启不受欢迎和极少使用的ANSI trigraph特性,以及禁止`$'成为标识符的一部分.

   尽管使用了`-ansi'选项,下面这些可选的关键字, __asm__, __extension__, __inline____typeof__仍然有效.你当然不会把他们用在ANSI C程序中,但可以把他们放在头文件里,因为编译包含这些头文件的程序时,可能会指定 `-ansi'选项.另外一些预定义宏,__unix____vax__,无论有没有使用 `-ansi'选项,始终有效.

   使用`-ansi'选项不会自动拒绝编译非ANSI程序,除非增加`-pedantic'选项作为     `-ansi'选项的补充.

   使用`-ansi'选项的时候,预处理器会预定义一个__STRICT_ANSI__.有些头文件关注此宏,以避免声明某些函数,或者避免定义某些宏,这些函数和宏不被ANSI标准调用;这样就不会干扰在其他地方使用这些名字的程序了.

-o file

   指定输出文件为file.该选项不在乎GCC产生什么输出,无论是可执行文件,目标文件,汇编文件还是预处理后的C代码.由于只能指定一个输出文件,因此编译多个输入文件时,使用`-o'选项没有意义,除非输出一个可执行文件. 如果没有使用`-o'选项,默认的输出结果是:可执行文件为`a.out', `source.suffix '的目标文件是`source.o',汇编文件是 `source.s',而预处理后的C源代码送往标准输出.

-c

   编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件. 缺省情况下, GCC通过用`.o'替换源文件名后缀`.c', `.i', `.s',等等,产生目标文件名.可以使用-o选项选择其他名字. GCC忽略-c选项后面任何无法识别的输入文件(他们不需要编译或汇编).

-pedantic

   打开完全服从ANSI C标准所需的全部警告诊断;拒绝接受采用了被禁止的语法扩展的程序. 无论有没有这个选项,符合ANSI C标准的程序应该能够被正确编译(虽然极少数程序需要`-ansi' 选项).然而,如果没有这个选项,某些GNU扩展和传统C特性也得到支持.使用这个选项可以拒绝这些程序.没有理由使用这个选项,他存在只是为了满足一些书呆子(pedant). 对于替选关键字(他们以`__'开始和结束) `-pedantic'不会产生警告信息. Pedantic 也不警告跟在__extension__后面的表达式.不过只应该在系统头文件中使用这种转义措施,应用程序最好避免.

-Wl,option

  把选项option传递给连接器.如果option中含有逗号,就在逗号处分割成多个选项.
-w
   禁止所有警告信息.
-pedantic-errors
   该选项和`-pedantic'类似,但是显示错误而不是警告.
-Wall
   结合所有上述的`-W'选项.通常我们建议避免这些被警告的用法,我们相信,恰当结合宏的使用能够轻易避免这些用法。剩下的`-W...'选项不包括在`-Wall',因为我们认为在必要情况下,这些被编译器警告的程序结构,可以合理的用在"干净的"程序中.
-Wstrict-prototypes

    如果函数的声明或定义没有指出参数类型,编译器就发出警告. (如果函数的前向引用说明指出了参数类型,则允许后面使用旧式风格的函数定义,而不会产生警告.)

 

 

 

 

 

 

 

 

 
 
 
 
 
 
 
 
 
 
 
 
阅读(1590) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~