2009-07-22 12 views

答えて

5

aot = full(いくつかのプラットフォームでのみサポートされています)を使用すると、実行時にコードがJITされることはありません。

しかし、アプリケーションで使用する多くの機能を実行するには、ランタイムが必要です。 Monoのランタイムには、ガベージコレクション、スレッド管理、IOレイヤー、IOremappingレイヤー、オペレーティングシステムへのインターフェース、10進タイプのサポート、リフレクション(これはtype.GetMethods()などの操作を行うことができます) 。

+0

OK私はそれを感謝すると思います。それはランタイムのネイティブコードですが、多分その点でvb6と似ています – jjb

2

AOTコンパイルは、プログラムが実行される前にMonoがメソッドをネイティブコードにコンパイルすることです。あなたはそれについて読むことができますhere

+0

リンクのおかげで、AOT = Fullオプションを使用すると、ランタイムのすべての依存関係が削除され、結果として得られるコードが管理されていない場合がありますか?これはダムの質問 – jjb

+0

場合は申し訳ありませんが、コードは、モノがないマシン上で実行することができますか? – jjb

+0

コードはネイティブコードにコンパイルされますが、まだライブラリが必要です。 – Aragorn

2

はい、結果はネイティブコードですが、基本的なAOTバージョンでは、実行するにはMonoランタイムが必要です。

"Mono on iPhone"のシナリオは少し複雑です。まず、管理ライブラリはMono Linkerを使用してトリムされます。結果はmono --aot=fullのネイティブコードにコンパイルされます。最後に、これはすべてmkbundleに渡され、Monoランタイムを含む単一の実行可能ファイルにパックされます。

Microsoft .NET/Monoをインストールせずに.Netアプリケーションを実行したいだけなら、mkbundleを使用してください。

+0

ありがとうございました。私はそれをよりよく理解するのに役立ちます。 – jjb

関連する問題