cpp learning

C++ 从代码到可执行文件需要经过以下过程

compile

下面以 hello.cpp 为例。

#include <iostream>

int main()
{
	std::cout << "Hello World!" << std::endl;
	std::cin.get();
}
  1. 预处理(Preprocessing)

    由预处理器完成,将源文件处理为预处理文件。其实就是将代码整合一下,将需要的头文件引入到源文件中,hello.c 预处理后也有上百条代码,因此我将输出流定向到 hello.i 文件中。

    g++ -E hello.cpp > hello.i  //生成预处理后的.i文件
    
  2. 编译(Compilation)

    对 C++ 的语句进行翻译并优化成汇编指令,这是最核心的部分。在源文件中使用的函数和变量如果不声明的话编译将会出错。

    g++ -S hello.i 			//生成汇编.s文件
    
  3. 汇编(Assembly)

    将汇编指令翻译为机器指令,生成目标文件

    g++  -c  hello.s            //生成二进制.o文件
    
  4. 链接(Linking)

    我们可能有多个目标文件,链接器的作用就是将多个目标文件链接成一个可执行文件。

    g++ hello.o  -o  hello  	  //生成二进制.out可执行文件 
    

参考文献