c++ 编译过程

c++ 编译过程介绍

image

本文将对以下程序使用 g++ 进行编译,去讲述 c++ 的编译过程。

// hello.cpp
#include <iostream>

#define PI 3.14

int main(){
    std::cout << "Hello PI :" << PI << std::endl;
    getchar();
    return 0;
}

一、预处理(Preprocess)

shell 命令:

$ g++ -E hello.cpp -o hello.ii

预处理阶段做了什么呢?

预处理主要对预处理指令做出处理,例如对 #define 的替换,插入 #include 的头文件等操作。

可以看到我们定义的常量因为是预处理指令,被替换掉了:
image

二、编译(Compile)

shell 命令:

$ g++ -S hello.ii -o hello.s

编译阶段做了什么呢?

编译将预处理后的代码文件“翻译”成汇编语言的文件

三、汇编(assemble)

shell 命令:

$ g++ -C hello.s -o hello.o

汇编阶段做了什么呢?

汇编将汇编语言文件“翻译”成机器代码的二进制文件

shell 命令:

$ g++ -O hello.s -o hello.exe

链接阶段做了什么呢?

链接就是把每个源代码独立编译后的结果,然后按照它们的要求将它们组装起来,链接主要解决的是源代码之间的相互依赖问题。

写完了

以上就是本文全部内容,如有错误,请直接联系我。

posted @ 2021-05-16 12:24  陈加成  阅读(508)  评论(0)    收藏  举报