学习from gcc/g++ 链接库的编译与链接
c++编译分为四个阶段
- 预编译
- 编译
- 汇编
- 链接
预编译
预编译是c++编译的最初部分,它的工作是在编译之前对程序内容进行最有的取舍处理,使得一些语句参加编译,而另一些语句不参加编译。
常用的预编译指令是:
1、包含指令:#include
2、条件指令:#if、#elif、#else、#endif、#ifdef、#ifndef
3、定义指令:#define、#undef
-
include 将包含的头文件展开到程序文件中
- 条件编译指令的作用是直接取舍程序语句和协调多个头文件
比如在升级gcc版本时,同时需要满足旧版本编译,就可以使用条件编译
#if defined(__GNUC__) && (__GNUC__ >= 3 )
//balabala
#else
//balabala other
- 定义指令可以用来防止同一个文件被include多次
这个阶段对于C预处理后的文件后缀是.i, c++处理后文件后缀是.ii
from c++ 预编译
编译
编译阶段的主要工作通过词法分析和语法分析将c++代码翻译成汇编代码
这个阶段会将.i文件转化为.s文件
汇编
顾名思义汇编是将汇编语言翻译成机器指令
将.s文件转化为.o文件