
C++源码到二进制可执行文件的过程与C语言类似,包括四个过程:预编译、编译、汇编、链接


1、预编译 C/C++编译过程中的第一个阶段,主要目的是对源代码进行处理和准备工作。下面是预编译的主要步骤:
预编译阶段主要包括宏展开、条件编译、头文件包含、注释过滤和标识添加等步骤,为后续的编译过程做好准备。 2、编译 1)词法分析+:将源代码的字符序列分割成一系列的记号,I 2)语法分析+:对记号进行语法分析,产生语法树+。 3)语义分析:判断表达式是否有意义。 4)代码优化 (5)目标代码生成+:生成汇编代码+ (6)目标代码优化 3、汇编 将汇编代码转变成机器可以执行的指令 4、链接 将不同的源文件产生的目标文件进行链接形成一个可以执行的程序。 (1) 静态链接:在链接的时候就已把要调用的函数链接到生成的可执行文件中。 把静态库删除也不会影响可执行程序执行。生成的静态链接库Windows下以 .lib 为后缀,Linux 下以 .a 为后缀。 (2) 动态链接:在链接的时候没有把调用的函数代码链接进去,而是在执行的过程中去找要链接的函数 生成的可执行文件中没有函数代码,只包含函数的重定位信息。 当删除动态库时,可执行程序就不能运行。生成的动态链接库Windows下以 .dll 为后缀,Linux下以 .so 为后缀。