C++程序运行后会生成一个exe文件,为什么会产生这个文件呢?
是这样的,C++代码需要转换成CPU能够识别的二进制指令,才能被 CPU识别,因此 代码被某种工具加工成了目标文件,再经过链接器将目标文件打包成可执行文件exe(或者库文件或者目标文件的程序),加工成目标文件的特殊程序,叫编译器,打包目标文件的特殊程序 叫链接器
编译器的职能: C++代码 》转变》 二进制指令 (目标文件)
链接器的职能:二进制指令(目标文件) 》转变》 可执行文件
目的:让CPU识别C++代码
多一嘴
编译器
编译器是一个将高级语言(如C++代码) 翻译为低级语言(二进制指令)的程序,即 源文件 》(编译器)》二进制文件
过程:
- 词法分析 (字符串—> token流)
- 语法分析 (token流—> 若干语法结构)
- 中间代码生成 (语法结构–>根据语义得到中间表示)
- 优化 (中间代码–> 更好的中间代码)
- 目标代码生成 (中间代码–>目标机器上的机器码或汇编)
链接器
链接器是将编译器生成的二进制文件打包成一个可执行文件
过程:
- 首先, 链接器对给定的目标文件或库的集合进行符号决议以确保模块间的依赖是正确的。
- 其次, 链接器将给定的目标文件集合进行拼接打包成需要的库或最终可执行文件。
- 最后, 链接器对链接好的库或可执行文件进行重定位。