1

在 Miguel de Icaza 的一些关于使用 mono 为 iphone 制作应用程序的文章中,我遇到了提前 (aot) 编译。听起来结果是本机代码。是这样还是有什么区别?

4

3 回答 3

5

当您使用 aot=full(仅在少数平台上支持)时,不会在运行时 JITed 代码。

但是您仍然需要运行时来提供应用程序使用的许多功能。Mono 的运行时包括对垃圾收集、线程管理、IO 层、IOremap 层、操作系统接口的支持、对十进制类型的支持、反射(因此您仍然可以执行 type.GetMethods() 之类的操作) .

于 2009-07-22T15:52:35.630 回答
2

AOT 编译是,Mono 会在程序运行之前将方法编译为本机代码。你可以在这里阅读

于 2009-07-22T01:43:13.607 回答
2

是的,结果是本机代码,但是在基本的 AOT 版本中,这仍然需要 Mono 运行时来执行。

在“iPhone 上的 Mono”场景中发生的事情要复杂一些。首先,使用Mono Linker修剪托管库。然后将结果编译为本机代码mono --aot=full。最后,所有这些都传递给mkbundle以将其打包成一个可执行文件,包括 Mono 运行时。

如果您只想在不安装 Microsoft .Net / Mono 的情况下运行 .Net 应用程序,那么只需使用 mkbundle。

于 2009-07-22T07:51:51.430 回答