C#程序如何编译成Native代码

一:背景

1. 讲故事

大家都知道所谓的.NET Native AOT即通过AOT编译器直接将C#代码编译成机器码,大家也习惯用C/C++的编译过程来类比,都是静态编译本质上都差不多,这篇我们借助工具从宏观层面去看一看AOT的编译过程。

二:C/C++ 的编译过程

用gcc编译过c代码的朋友都知道,分别可以用 -E, -S, -c,-o 来显示编译的各个阶段,即:

  1. 预处理阶段:落地 define,include文件和代码。
  2. 编译阶段:将C转为汇编代码。
  3. 汇编阶段:汇编代码转为机器码。
  4. 链接阶段:链接libc库及系统库,生成可执行文件。

画一张图如下:

这个世界上虽然说隔行如隔山,但隔行不隔理,有了这些知识,接下来就是按图索骥的对号入座即可。

三:AOT编译过程

在.NET中AOT编译器叫做ilc.exe,它是用C#代码写的,并且随.NET版本更新,比如我这里的 C:\Users

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值