目录
gcc 与 g++编译流程
编译流程
- 链接:生成链接文件
预处理:生成.i 的预处理文件
- 预处理:生成.i 的预处理文件
编译:生成.s 的编译文件
- 只激活预处理和编译,把文件编译成汇编代码
汇编:生成.o 的汇编文件
- 只激活预处理,编译和汇编,把程序做成 obj 文件
链接:生成可执行文件
常用方式
gcc 与 g++常用参数介绍:
-E
- -E 选项指示编译器仅对输入文件进行预处理
- 当这个选项被使用时,预处理器的输出被送到标准输出而不是储存在文件里,所以需要 -o 定向到某个文件中
-S
- -S 选项告诉 GCC 在为 C 代码产生了汇编语言文件后停止编译。
- GCC 产生的汇编语言文件的缺省扩展名是.s。
-c
- -c 选项告诉 GCC 仅把源代码编译为目标代码。
- 缺省时 GCC 建立的目标代码文件有一个.o 的扩展名。
-o
- -o 选项来为将产生的可执行文件用指定的文件名
-O
- -O 选项告诉 GCC 对源代码进行基本优化,这些优化在大多数情况下都会使程序执行的更快,优化分为 4 个等级(-O0,-O1,-O2,-O3)。
-O0 表示没有优化 -O1 为缺省值,主要进行跳转和延迟退栈两种优化 -O2 除了完成-O1 的优化之外,还进行一些额外的指令调整工作 -O3 除了完成-O2 的优化之外,还进行包括循环展开和其他一些与处理特性相关的优化工作
- 其他优化等级的用法与演示中-O3 的用法一样。
-x
- 设定文件编译所使用的语言,使后缀名无效。
-C
- 在预处理的时候,不删除注释信息
gcc -E hello.c -C
- 保留注释信息。
gcc -E hello.c
- 删除注释信息。
-M
- 生成文件关联信息。包含目标文件所依赖的所有源代码。