В чем разница между заранее скомпилированным кодом и нативно скомпилированным кодом - PullRequest
1 голос
/ 22 июля 2009

Я натолкнулся на преждевременную компиляцию в некоторой статье Мигеля де Иказы о создании приложений для iphone с использованием моно. Похоже, что в результате получается нативный код. Это так или в чем разница?

Ответы [ 3 ]

5 голосов
/ 22 июля 2009

Когда вы используете aot = full (поддерживается только на нескольких платформах), тогда код JIT не будет JITed во время выполнения.

Но вам все еще требуется среда выполнения для предоставления многих функций, которые использует ваше приложение. Среда исполнения Mono включает в себя поддержку сборки мусора, управление потоками, уровень IO, уровень IOremapping, интерфейс с операционной системой, поддержку десятичного типа, отражение (так что вы все еще можете делать, например, type.GetMethods ()) .

2 голосов
/ 22 июля 2009

Да, результат - собственный код, но в базовой версии AOT для выполнения все еще требуется среда выполнения Mono.

То, что происходит в сценарии «Моно на iPhone», немного сложнее. Сначала управляемые библиотеки обрезаются с помощью Mono Linker . Затем результат компилируется в собственный код с mono --aot=full. Наконец, все это передается mkbundle , чтобы упаковать его в один исполняемый файл, включая среду выполнения Mono.

Если вы просто хотите запускать приложения .Net без установки Microsoft .Net / Mono, просто используйте mkbundle.

2 голосов
/ 22 июля 2009

Компиляция AOT заключается в том, что Mono будет компилировать методы в собственный код до запуска программы. Вы можете прочитать об этом здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...