gcc这条命令用来将源代码生成可执行程序,下面来看一下gcc的常用选项。
1、无选项编译链接
例:命令:gcc test.c //会默认生成a.out可执行程序
2、-E: 进行预处理和编译,生成汇编文件。
命令:gcc -E test.c //会生成test.i文件
3、-S: 进行预处理,编译,汇编等步骤,生成“.s”文件
例:命令:gcc -S test.c //会生成test.s文件
4、-c: 会直接生成二进制目标文件
例:命令:gcc -c test.c //会生成test.o文件
5、-o :对生成的目标进行重命名
例:命令:gcc -o test test.c //会生成名字是test可执行文件而不是默认的a.out
6、-pipe: 使用管道代替编译中的临时文件
例:命令:gcc -pipe -o test test.c
7、-include file :包含某个代码。相当于在文件中加入#include
例:gcc test.c -include /root/file.h
8、-Idir:当你使用#include”file”的时候,会先到你定制的目录里面查找
9、-I-:取消前一个参数的功能。一般在-Idir之后使用
10、-C:在预处理的时候不删除注释信息,一般和-E使用。
11、-M:生成文件关联信息。包含目标文件所依赖的所有源代码。
12、-MM:和-M一样,只不过忽略由#include所造成的依赖关系。
13、-MD:和-M相同,只不过将输出导入到”.d”文件里面
14、-MMD:和-MM相同,将输出导入到”.d”文件里面。
15、-llibrary:定制编译的时候使用的库
例:gcc -lpthread test.c //在编译的时候要依赖pthread这个库
16、-Ldir:定制编译的时候搜索库的路径。如果是自己定制的库,可以用它来定制搜索目录,否则编译器只在标准库目录里面找,dir就是目录的名字
17、-O0(字母o和数字0):没有优化
-O1:-O1位缺省值
-O2:二级优化
-O3:*优化
级别越大优化越好,但编译时间边长。
18、-g:在编译的时候假如debug调试信息,用于gdb调试
19、-share:此选项尽量的使用动态库,所以生成文件比较小,但是必须是系统有动态库。
20、-shared:生成共享目标文件,通常用在建立共享库。
21、-static:链接时使用静态链接,但是要保证系统中有静态库。
22、-w:不生成任何警告信息
22、-Wall:生成所有警告信息