Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2287400
  • 博文数量: 668
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 8588
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 19:22
文章分类

全部博文(668)

文章存档

2011年(1)

2010年(2)

2009年(273)

2008年(392)

分类:

2008-05-30 09:27:13

经常用到的一些要记住的参数

1. -I 指定头文件搜索路径(include 
 $gcc -c hello.c -o hello.o -I/usr/include 

2.-L 指定要连接的库所在的目录 
-l 
指定要连接的库的名字
 
$gcc main.o -L/usr/lib -lqt -o hello 

3. -D 定义宏(D-define) 
-D
定义宏有两种情况,一种是-DMACRO 相当于程序中使用#define MACRO 另外可以-DMACRO=A 相当于程序中使用#define MACRO A 这只是一个编绎参数,在连接时没有意义
 
如:
 $gcc -c hello.c -o hello.o -DDEBUG 
上面为hello.c定义了一个DEBUG宏,某些情况下使用-D 代替直接在文件中使用#define,也是为了避免修改源代码双。例如一个程序希望在开发调试的时候能打印出调试信息,而正式发布的时候就不用打印了,而且发布前不用修改源代码双。可以这样
 
#ifdefine DEBUG 
printf("debug message\n"); 
#endif 
对于这段代码,平时调试的时候就加上-DDEBUG 发布时不用-D选项
 
与之对应的是-UMACRO参数,相当于#undef MACRO,取消宏定义
 

4. -g 
生成调试信息
 
-g
生成调试信息,这对使用gdb进行调试是必须的。带有调试信息的文件要比普通文件要大,但不影响运行,可以用strip命令除于其中的调试信息
 

5. -E

预处理后即停止,不进行编译.

 

6. -S

编译后即停止,不进行汇编.对于每个输入的非汇编语言文件,输出文件是汇编语言文件.


7. -c

编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件.



6. -ansi 
指示gcc只支持ansi c标准语法 

8. -O 
指定优化处理
 
-O0
不优化 -O1-O 一级优化 -O2 二级优化
...-O3,-O4 
级别越高,,代码越优,编绎时间越长。
 

9. -w 
关闭编译器警告信息

 

10. Makefile有关

 

-M  [ -MG ]

告诉预处理器输出一个适合make的规则,用于描述各目标文件的依赖关系.对于每个源文件,预处理器输出一个make规则,该规则的目标项(target)是源文件对应的目标文件名,依赖项(dependency)是源文件中 `#include引用的所有文件.生成的规则可以是单行,但如果太长,就用`\'-换行符续成多行.规则 显示在标准输出,不产生预处理过的C程序.

-MM  [ -MG ]

`-M'选项类似,但是输出结果仅涉及用户头文件,象这样`#include file"'.忽略系统头文件如`#include '.

-MD

`-M'选项类似,但是把依赖信息输出在文件中,文件名通过把输出文件名末尾的`.o'替换为 `.d'产生.同时继续指定的编译工作---`-MD'不象`-M'那样阻止正常的编译任务.

Mach的实用工具`md'能够合并`.d'文件,产生适用于`make'命令的单一的 依赖文件.

-MMD

`-MD'选项类似,但是输出结果仅涉及用户头文件,忽略系统头文件

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