单声道2.4可以在FreeBSD x86(或x64)上编译吗?

我使用一个运行FreeBSD 7.2的共享networking服务器(NearlyFreeSpeech.net,强烈推荐!),并且喜欢用C#编写CGI脚本,但是他们还没有安装Mono。 如果我使用自己的FreeBSD 7.2盒子并在那里编译我的C#程序,我可以AOT编译我的代码并在无单音服务器上部署二进制文件吗?

我知道在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的工作,并find同样的事情:不支持AOT编译,这是关心FreeBSD + Mono的唯一原因。 。

AOT只消除了(大部分)JIT编译的需要。 您仍然需要VM提供的所有其他服务 – 垃圾回收,元数据,IO,安全性,dynamic编译等。

AOT在桌面环境中的优势是缩短启动时间,允许使用更昂贵的编译器优化,并允许在应用程序之间共享代码。

iPhone是一个特例,因为它不允许dynamic库和JITing。 所以CLI代码被AOT编译成静态库,然后用一个精简的Mono运行库连接在一起,产生一个二进制文件。 但是,禁用JIT会增加一些限制。 例如,generics的某些用法是不可能的(AOT编译器不能总是静态地确定它需要编译哪种泛化genericstypes),dynamic代码生成(IronPython等语言所需的)是不可能的。

最好的办法是build立一个并行单声道环境 – 或者直接在远程机器上构build它,或者在本地构build它,安装到一些临时前缀中,然后将其复制。