回顾C++,C/C++为什么生成了一个exe文件?

C++程序运行后会生成一个exe文件,为什么会产生这个文件呢?

是这样的,C++代码需要转换成CPU能够识别的二进制指令,才能被 CPU识别,因此 代码被某种工具加工成了目标文件,再经过链接器将目标文件打包成可执行文件exe(或者库文件或者目标文件的程序),加工成目标文件的特殊程序,叫编译器,打包目标文件的特殊程序链接器

编译器的职能: C++代码 》转变》 二进制指令 (目标文件)

链接器的职能:二进制指令(目标文件) 》转变》 可执行文件

目的:让CPU识别C++代码

多一嘴

编译器

编译器是一个将高级语言(如C++代码) 翻译为低级语言(二进制指令)的程序,即 源文件 》(编译器)》二进制文件

过程:

  • 词法分析 (字符串—> token流)
  • 语法分析 (token流—> 若干语法结构)
  • 中间代码生成 (语法结构–>根据语义得到中间表示)
  • 优化 (中间代码–> 更好的中间代码)
  • 目标代码生成 (中间代码–>目标机器上的机器码或汇编)

链接器

链接器是将编译器生成的二进制文件打包成一个可执行文件

过程:

  • 首先, 链接器对给定的目标文件或库的集合进行符号决议以确保模块间的依赖是正确的。
  • 其次, 链接器将给定的目标文件集合进行拼接打包成需要的库或最终可执行文件。
  • 最后, 链接器对链接好的库或可执行文件进行重定位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值