C++源码编译需要4个步骤 预编译,编译,汇编,链接。
C/C++编译的过程分为预编译、编译、汇编、链接四个部分,分别由与编译器,编译器,汇编器和链接器完成。其中各个步骤使用gcc/g++命令和每个步骤的任务如下所示:
- 预编译部分完整宏展开,将相关的头文件和宏定义进行展开,头文件以一种类似拷贝的方式包含到被调用的文件中,但又不完全等同于拷贝,宏定义直接进行替换;
- 编译部分将C代码转换到汇编代码;
- 汇编部分将汇编代码转成目标代码,也就是机器代码;
- 最后链接器将各个编译好的文件,以及库文件进行链接,得到可执行文件。
每个步骤的编译器指令:
- 预编译g++ -E file.cpp -o file1
- 编译g++ -S file1 -o file2
- 汇编g++ -c file2 -o file3
- 链接g++ file3 -o file4
简单的记忆方法,键盘上的ESc字母,就是前两个字母需要大写,最后链接器没有参数。
- 编译不需要头文件参与,头文件只是让编译器知道有这样一些成员的存在;
- 当执行第n步的转换时,如果没有进行前面步骤的转换,则编译器将自动完成;
- C++采取的时分离式编译过程,只有到最后链接的一步骤才把所有的源文件关联到一起。