GCC分步编译C++源程序
-
预处理:
- 语法:
g++ -E demo.cpp -o demo.i。 - 由于编译阶段需要用到预处理的结果,因此这里必须使用
-o选项将该结果输出到指定的demo.i文件中(Linux 系统中,通常用 ".i" 或者 ".ii" 作为 C++ 程序预处理后所得文件的后缀名)。
- 语法:
-
编译:
- 语法:
g++ -S demo.i - 对预处理文件进行编译操作,实际上就是对
demo.i文件做进一步的语法分析,并生成对应的汇编代码文件(Linux 发行版通常以 ".s" 作为其后缀名)。
- 语法:
-
汇编:
- 语法:
g++ -c demo.s。 - 汇编阶段就是将之前生成的汇编代码文件(
demo.s)做进一步转换,生成对应的机器指令。默认情况下汇编操作会自动生成一个和汇编代码文件名称相同、后缀名为.o的二进制文件(又称为目标文件)。
- 语法:
-
链接:
- 语法:
g++ demo.o - 目标文件已经是二进制文件,与可执行文件的组织形式类似,只是有些函数和全局变量的地址还未找到,因此还无法执行。链接的作用就是找到这些目标地址,将所有的目标文件组织成一个可以执行的二进制文件。
- 语法:
如果不想执行这么多条指令,但想获得预处理、编译、汇编以及链接这 4 个过程产生的中间文件,可以执行如下指令:
g++ demo.cpp -save-temps。即给 g++ 添加 -save-temps 选项。
浙公网安备 33010602011771号