常用gcc编译选项
选项 | 作用 |
---|
-E | 生成预处理文件 | -S | 生成汇编文件 | -c | 生成可目标文件 | -o | 指定生成文件的文件名 | -On | 指定代码优化等级 | -g | 用于gdb调试、objdump | -Wall | 显示代码中的所有warning行为 | -w | 禁止显示代码中的warning行为 | -Werror | 将代码中的warning行为视为error |
-D | 设置预定义宏 |
---|
-l | 链接(link)指定的函数库 | -std=c++11 | 指定编译代码的C++标准为C++11 |
-E 、-S 、-c 三个选项直接对应着编译的前三个基本阶段
编译预处理(.i)
将源文件main.cc 经过预处理后,生成文件。预处理所得文件main.i
g++ -E main.cc -o main.i
编译、优化程序(.s)
将main.i 文件翻译成一个汇编文件main.s
g++ -S main.cc -o main.s
汇编程序(.o)
运行汇编器,将main.s 翻译成一个可重定位目标文件main.o
g++ -c main.s -o main.o
链接程序(.elf)
运行链接器,将main.o 中使用到的目标文件组合起来,并创建一个可执行的文件main .
由于main.cc 代码没有额外的依赖,因此可以直接输出main 文件
g++ main.o -o main
实际上,一步就能够完成上面所有的操作r
g++ main.cc -o main
|