g++工作流程和常用选项
g++是GNU编译器集合中用于C++语言的编译器。编译C++程序通常需要经过四个主要步骤:
-
预处理(Preprocessing):
在这个阶段,预处理器会处理源代码文件,执行一些预处理指令,如宏替换、文件包含等。预处理器产生的输出通常以.i或者.ii为文件扩展名,这是一个经过预处理的中间文件。g++ -E source.cpp -o source.ii
-
编译(Compilation):
编译器将预处理后的源代码转换成汇编代码。这个阶段的输出通常以.s为文件扩展名。g++ -S source.ii -o source.s
-
汇编(Assembly):
汇编器将汇编代码转换成机器码(二进制目标文件)。这个阶段的输出通常以.o为文件扩展名。g++ -c source.s -o source.o
-
链接(Linking):
链接器将目标文件与所需的库文件链接在一起,生成可执行文件。在这个阶段,解析符号引用、地址重定向等操作都会发生。g++ source.o -o executable
可以使用g++
命令来一次性完成整个编译过程:
g++ source.cpp -o executable
这个命令会自动执行上述的四个步骤,生成最终的可执行文件。
演示如下:
g++常用选项
选项 | 作用 |
---|---|
-o file | 指定生成的输出文件名为file |
-E | 只进行预处理 |
-S(大写) | 只进行预处理和编译 |
-c(小写) | 只进行预处理、编译和汇编 |
-v / --version | 查看gcc版本号 |
-g | 包含调试信息 |
-On n=0~3 | 编译优化,n越大优化得越多 |
-Wall | 提示更多警告信息 |
-D | 编译时定义宏 |
显示所有的警告信息
g++ -Wall test.cpp
将警告信息当做错误处理
g++ -Wall -Werror test.cpp