gcc参数介绍
-x language filename
设定文件所使用的语言,而不是以后缀识别语言
-x none filename
关掉上个选项的语言设置,使用文件的后缀识别语言
-c
对文件进行预处理、编译和汇编,生成obj文件
gcc -c hello.c
-C
在预处理的时候,不删除注释信息,一般用于分析程序
-S
只进行预处理和编译,生成汇编代码
gcc -S hello.c
-E
只进行预处理,这个选项不生成文件,可以使用重定向或者-o选项使其生成一个文件
gcc -E hello.c -o hello.i
-o
制定目标的名称,默认为a.out
gcc -o hello hello.c
-ansi
关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性
-include file
包含某个代码,相当于在代码中使用#include
gcc hello.c -include /usr/lib/hello.h
-imacros file
将file中的宏加入到输入文件中
-Dmarco
相当于#define macro
-Dmarco=defn
相当于#define macro=defn
-Umacro
相当于#undef macro
-Idir
对于#include“filename",gcc/g++会先在当前目录查找头文件,如果没有找到则回到默认的头文件目录找。如果使用了-Idir选项,则会现在dir目查找,再按常规的顺序去找。
对于#include<filename>,使用-Idir选项,gcc/g++会到dir目录下查找,然后再到系统默认的头文件目录查找。
-I-
取消-Idir选项
-idirafter dir
在-I选项指定的目录里面查找失败,则到这个目录下查找
-iprefix prefix、-iwithprefix dir
一般一起使用,在-I选项指定的目录里面查找失败,则到prefix+dir下查找
-nostdinc
使编译器不在系统默认的头文件目录里面找文件,一般和-Idir选项一起使用
-nostdin c++
规定不再g++指定的标准路径中搜索
-M
生成文件关联的信息
-MM
生成文件关联信息,但是忽略#include造成的依赖关系
-MD
同-M,同时将结果输出到后缀为.d的文件里
-MMD
同-MM,同时将结果输出到后缀为.d的文件里
-llibaray
制定编译时候使用的库
gcc -lpthread hello.c
-Ldir
制定编译的时候,搜索库的路径。不然编译器将只在标准库的目录下查找。
-static
禁止使用动态链接库,编译出来的文件一般很大
-share
尽量使用动态链接库,编译出来的文件一般较小,但运行时依赖动态链接库。
-traditional
试图让编译器支持传统的C语言特性
-O0、O1、-O2、O3
编译器优化选项。-O0为不做任何优化,-O或-O1为默认优化,-O2进一步优化,-O3更进一步优化,包括inline函数。
-w
不生成任何警告信息
-Wall
生成所有警告信息
关于gcc和g++
GCC可同时用来编译C程序和C++程序。gcc命令只能编译C++源文件,而不能自动和C++程序使用的库连接。因此,通常使用g++命令来完成C++程序的编译和连接,该程序会自动调用gcc实现编译。
来源:CSDN
作者:xiaoju233
链接:https://blog.csdn.net/qq_38600065/article/details/104729290