目录
一、gcc编译器
1.1、gcc工作流程
预处理(pre-processing) E:插入头文件,替换宏,将stdio.h文件中的内容插入到hello.c中
编译(compliling) S:编译成汇编代码
汇编(Assembling) c:编译成目标文件
链接(Linking):链接到库中,变成可执行文件
1.2、GCC编译流程分析
编译阶段 | 源文件 | 命令参数 | 目标文件 | 示例 | 参数解释 |
---|---|---|---|---|---|
预处理阶段 | .c | -E | .i/.ii(C代码) | gcc -E test.c -o test.i -Wall | -E:使编译器在预处理结束时就停止编译 |
.C/.cc/.cxx | -o:生成GCC的输出结果 | ||||
.m | -Wall:(预处理阶段不起作用) | ||||
编译阶段 | .i | -S | .s/.S(汇编代码) | gcc -S test.i -o test.s -Wall | -S:使编译器在编译结束后就停止 |
.ii | -Wall:编译时打印出所有警告 | ||||
汇编阶段 | .s/.S | -c | .o(二进制代码) | gcc -c test.s -o test.o -Wall | -c:无链接步骤,编译源码并最后生成目标文件 |
链接阶段 | .o | gcc test.o -o test.out | |||
.a/.so |
其他常用参数:
参数 | 用途 |
---|---|
-v | 查看版本 |
-o | 产生目标文件 |
-I+目录 | 指定头文件目录 |