全部博文(668)
分类:
2008-05-30 09:27:13
经常用到的一些要记住的参数
1. -I 指定头文件搜索路径(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'选项类似,但是输出结果仅涉及用户头文件,忽略系统头文件