gcc编译参数

gcc 编译流程:

  1. 预处理-Pre-Processing
    -E 选项指示编译器仅对输入文件进行预处理。当这个选项被使用时, 预处理器的输出被送到标准输出而不是储存在文件里
    gcc -E code.c -o code.i //.i文件

  2. 编译-Compiling
    -S 编译选项告诉 GCC 在为 C 代码产生了汇编语言文件后停止编译。
    gcc -S code.i -o code.s //.s文件

  3. 汇编-Assembling
    -c 选项告诉 GCC 仅把源代码编译为目标代码。缺省时 GCC 建立的目标代码文件有一个 .o 的扩展名。
    gcc -c code.s -o code.o//.o文件

  4. 链接-Linking
    -o 编译选项来为将产生的可执行文件用指定的文件名。
    gcc code.o -o a//bin文件

gcc编译参数

其他选项:

选型 描述 示例
-g 产生带调试信息的编译后目标代码,供调试器(gdb)使用 gcc -g source.c
-C 预处理时不删除注释信息 配合-E使用
-O 使用编译优化级别1编译程序。O后还可附带其他的数值,表示不同的优化级别。级别越大优化效果越好,但编译时间越长 -O0:无优化(默认) 。 -O和-O1:优化可执行文件大小及执行时间,且不使编译时间明显增加。编译大型程序时会显著增加编译时内存的使用。 -O2:包含-O1的优化,并增加无需在目标文件大小和执行速度上进行折衷的优化。编译器不执行循环展开及函数内联,即不进行“空间换时间”的优化。该选项将增加编译时间和目标文件的执行性能。-Os:执行所有不增加目标文件大小的-O2选项,并执行专门减小目标文件大小的优化选项。 -O3: 打开所有-O2优化选项并且增加 -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload和-ftree-vectorize优化选项。[e.g.1]gcc -O1 source.c -o exec
-shared 生成共享目标文件 用于建立共享链接库
-w 禁止显示任何警告信息
-Wall 显示全部警告信息
–version 显示gcc版本号和版本信息