GCC分步编译C++源程序

GCC分步编译C++源程序

  1. 预处理

    • 语法:g++ -E demo.cpp -o demo.i
    • 由于编译阶段需要用到预处理的结果,因此这里必须使用 -o 选项将该结果输出到指定的 demo.i 文件中(Linux 系统中,通常用 ".i" 或者 ".ii" 作为 C++ 程序预处理后所得文件的后缀名)。
  2. 编译

    • 语法:g++ -S demo.i
    • 对预处理文件进行编译操作,实际上就是对 demo.i 文件做进一步的语法分析,并生成对应的汇编代码文件(Linux 发行版通常以 ".s" 作为其后缀名)。
  3. 汇编

    • 语法:g++ -c demo.s
    • 汇编阶段就是将之前生成的汇编代码文件(demo.s)做进一步转换,生成对应的机器指令。默认情况下汇编操作会自动生成一个和汇编代码文件名称相同、后缀名为 .o 的二进制文件(又称为目标文件)。
  4. 链接

    • 语法:g++ demo.o
    • 目标文件已经是二进制文件,与可执行文件的组织形式类似,只是有些函数和全局变量的地址还未找到,因此还无法执行。链接的作用就是找到这些目标地址,将所有的目标文件组织成一个可以执行的二进制文件。

如果不想执行这么多条指令,但想获得预处理、编译、汇编以及链接这 4 个过程产生的中间文件,可以执行如下指令: g++ demo.cpp -save-temps。即给 g++ 添加 -save-temps 选项。

posted on 2024-01-22 10:10  WilliamMoa  阅读(41)  评论(0)    收藏  举报