提前编译的代码和本机编译的代码有什么区别

发布于 2024-07-28 23:14:19 字数 101 浏览 8 评论 0原文

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

i came across ahead-of-time (aot) compilation in some writing by Miguel de Icaza about producing applications for iphone using mono. It sounds like what results is native code.
Is this so or what is the difference?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

沉溺在你眼里的海 2024-08-04 23:14:19

当您使用 aot=full (仅在少数平台上支持)时,不会在运行时对任何代码进行 JIT 处理。

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

When you use aot=full (only supported on a few platforms) then no code will be JITed at runtime.

But you still require a runtime to provide many of the features that your application uses. Mono's runtime includes support for garbage collection, thread management, the IO-layer, the IOremapping layer, the interface to the operating system, support for the decimal type, reflection (so you can still do things like type.GetMethods () for example).

不弃不离 2024-08-04 23:14:19

AOT编译是指,Mono会在程序运行之前将方法编译为本机代码。 您可以在此处阅读相关内容

AOT compilation is that, Mono will compile methods to native code before the program is run. You can read about it here

梦归所梦 2024-08-04 23:14:19

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

“iPhone 上的 Mono”场景中发生的情况要复杂一些。 首先,使用 Mono Linker 修剪托管库。 然后使用 mono --aot=full。 最后,所有这些都被传递到 mkbundle 将其打包到单个可执行文件中,包括单声道运行时。

如果您只想运行 .Net 应用程序而不安装 Microsoft .Net / Mono,那么只需使用 mkbundle 即可。

Yes, the result is native code, but in the basic AOT version this still needs the Mono runtime to execute.

What happens in the "Mono on iPhone" scenario is a bit more complex. First, the managed libraries are trimmed using Mono Linker. Then the result is compiled to native code with mono --aot=full. Finally, all this is passed to mkbundle to pack it into a single executable, including the Mono runtime.

If you just want to run .Net applications without installing Microsoft .Net / Mono, then just use mkbundle.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文