文章预览
一:背景 1. 讲故事 大家都知道所谓的 .NET Native AOT 即通过AOT编译器直接将C#代码编译成机器码,大家也习惯用C/C++的编译过程来类比,都是静态编译本质上都差不多,这篇我们借助工具从宏观层面去看一看AOT的编译过程。 二:C/C++ 的编译过程 用gcc编译过c代码的朋友都知道,分别可以用 -E, -S, -c,-o 来显示编译的各个阶段,即: 预处理阶段:落地 define,include文件和代码。 编译阶段:将C转为汇编代码。 汇编阶段:汇编代码转为机器码。 链接阶段:链接libc库及系统库,生成可执行文件。 画一张图如下: 这个世界上虽然说隔行如隔山,但隔行不隔理,有了这些知识,接下来就是 按图索骥 的对号入座即可。 三:AOT编译过程 在.NET中AOT编译器叫做 ilc.exe ,它是用C#代码写的,并且随.NET版本更新,比如我这里的 C:\Users\Administrator\.nuget\packages\runtime.
………………………………