常用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
|