分类: LINUX
2011-01-04 08:43:27
-c: 预处理、编译、汇编,不进行链接,只生成obj文件
-o: 预处理、编译、汇编、链接,生成可执行文件
-E: 预编译
-S: 预处理、编译,生成汇编文件
-Idir:
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I指定了目录,他会先在你所制定的目录查找,然后再按常规的顺序去找.
对于#include,gcc/g++会到-I指定的目录查找,查找不到,然后将到系统的缺省的头文件目录查找
-I-: 就是取消前一个参数的功能,所以一般在-Idir之后使用
-M:
生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c来测试一下,很简单。
-MM: 和上面的那个一样,但是它将忽略由#include造成的依赖关系
-llibrary: 指定编译的时候使用的库
例子用法 :
gcc -lcurses hello.c
使用ncurses库编译程序
-Ldir:
指定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然编译器将只在标准库的目录找。这个dir就是目录的名称。
-O0:
-O1:
-O2:
-O3:
编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-static:
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行.
-share:
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库
-ggdb: 此选项将尽可能的生成gdb的可以使用的调试信息