C/C++程序从源代码到可执行程序的流程

  对于一个C/C++编写的程序,从源代码到可执行程序的过程通常是由IDE来完成的,一般分为四个步骤:预处理、编译、汇编、链接,下面就来详细说一下这四个步骤。

预处理:

  主要是对其中的伪指令和特殊符号进行处理:

  1. 将所有的"#define"进行替换,并删除所有的"#define"
  2. 处理所有条件预编译指令,比如:”#if”,“#ifdef”,“#elif”,“#else”,“#endif”,根据相关文件,将一些不必要的代码进行过滤。
  3. 处理头文件指令“#include”,将包含的头文件插入到该预处理指令的位置。这个过程是递归的,也就是说被包含的文件可能还包含其他文件。
  4. 删除所有注释“//”,“/* */”以及添加行号,便于编译器编译时产生调试用的行号信息及用于编译时产生编译错误或警告时显示行号。
  5. 保留所有的“#pragma”编译器指令,经过预处理后的.ii文件不包含任何宏定义,因为所有的宏在之前已经被展开,并且包含的文件也已经被插入到.ii文件中。
编译:

  编译就是对经过预处理后的文件进行词法分析和语法分析,确认过所有的指令都合法后生成相应的汇编代码。

汇编

  将汇编代码转变成机器可以执行的机器指令。对于每一条汇编语句在系统中都对应着一条机器语言。对于已经被翻译过的汇编程序,都将经过这一处理得到相应的目标文件。

链接

  链接的主要内容就是将各个模块彼此连接,使得各个模块之间能够正确衔接。链接的过程主要包裹地址和空间的分配,符号决议和重定位等步骤。这样就可以将这些模块形成一个能被操作系统装入执行的整体。

你可能感兴趣的:(C++学习笔记)