编译过程主要分为4个过程
1) 编译预处理 预编译程序完成的工作,可以说成是对源程序的“替换”工作。经过这个过程,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。
- 宏定义命令;例如#define
- 条件编译指令;例如#ifdef
- 头文件包含指令;例如#include
- 特殊符号;例如__LINE__,__FILE__
- 预处理模块;例如#pragma
2) 编译、优化阶段:通过词法分析、语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码或汇编代码。
在C++中,以下函数如果你没有定义但是被需要时,编译器会产生他们:默认构造函数、拷贝构造函数、析构函数、赋值运算符和一对取址运算符。
3) 汇编过程: 把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。
4) 链接程序 :将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。-l 的作用是做链接,链接的库是“boost_system”