Назад | Перейти на главную страницу

Может ли Mono 2.4 Ahead-Of-Time (AOT) скомпилироваться на FreeBSD x86 (или x64)?

Я использую общий веб-сервер (NearlyFreeSpeech.net, настоятельно рекомендуется!), Работающий под FreeBSD 7.2, и хотел бы написать для него сценарии CGI с использованием C #, но они еще не установили там Mono. Если я использую свой собственный модуль FreeBSD 7.2 и компилирую там свои программы C #, могу ли я АОТ скомпилировать мой код и развернуть двоичные файлы на сервере без моно?

Я знаю, что в App Store продается несколько игр для iPhone, и все они скомпилированы в AOT (для ARM). И на указанной выше странице говорится, что x86 и x64 поддерживаются, но на моей установке x86 Mac OS X Leopard Mono я пробовал

sudo mono --aot /Library/Frameworks/Mono.framework/Versions/2.4.2.1/lib/mono/2.0/mscorlib.dll

и

sudo mono --full-aot /Library/Frameworks/Mono.framework/Versions/2.4.2.1/lib/mono/2.0/mscorlib.dll

и получил ошибки:

AOT compilation is not supported on this platform.

и

Failed to load AOT module '/Library/Frameworks/Mono.framework/Versions/2.4.2.1/lib/mono/2.0/mscorlib.dll.dylib' in aot-only mode.

соответственно. Я просто не хочу тратить много времени на то, чтобы FreeBSD 7.2 + Mono 2.4.2.1 заработал, и обнаружил то же самое: компиляция AOT не поддерживается, и это единственная причина, по которой я беспокоюсь о FreeBSD + Mono .. .

AOT только устраняет необходимость (большей части) JIT-компиляции. Вам по-прежнему нужна виртуальная машина для всех других услуг, которые она предоставляет - сборки мусора, метаданных, ввода-вывода, безопасности, динамической компиляции и т. Д.

Преимущество AOT в среде рабочего стола заключается в сокращении времени запуска, использовании более дорогостоящих оптимизаций компилятора и обеспечении совместного использования кода между приложениями.

IPhone - особый случай, поскольку он запрещает как динамические библиотеки, так и JIT. Таким образом, код CLI компилируется AOT в статические библиотеки, которые затем связываются вместе с сокращенной средой выполнения Mono, создавая один двоичный файл. Однако отключение JIT добавляет некоторые ограничения. Например, некоторые виды использования универсальных шаблонов невозможны (компилятор AOT не всегда может статически определить, какие обобщенные универсальные типы ему необходимо скомпилировать), а динамическое создание кода (необходимое для таких языков, как IronPython) невозможно.

Лучше всего было бы построить Параллельная моно среда - либо создайте его непосредственно на удаленной машине, либо создайте локально, установите в какой-нибудь временный префикс, запустите tar и скопируйте его.