[Mono-list] Can't get Ahead-Of-Time compilation working

Alex Shulgin alexander.shulgin at yessoftware.com
Thu Oct 1 07:37:13 EDT 2009

LKeene wrote:
> Sorry for being a bother folks, but I'm finding all of this a little
> confusing. I'm a "Windows only" guy and I still don't understand what the
> steps are to perform AOT using Mono on Mac. My app is pure WinForms and I'm
> running a VS2008-generated binary on the Mono platform when running my app
> on Linux or OSX. I know next to nothing about OSX / Linux and have been
> relying on others to install Mono on their machines and run my app whenever
> I need to test a new build. The Linux performance is good enough with JIT,
> but the OSX performance is a little slow so I was hoping that AOT would help
> here. My app is also doing a ton of startup stuff, so AOT would hopefully
> help there too.
> My understanding is that if I want to make use of the AOT feature, I first
> precompile the app using "mono --aot -O=all MyApp.exe". Then I invoke the
> precompiled app via "mono MyApp.exe.so SomeCommandLineArgumentMyAppNeeds".
> Is all this correct?

You get it right, almost.

1. You have to run mono --aot MyApp.exe on OSX once after every update 
of the .exe file.  This will give you MyApp.exe.so file which is a 
native OSX binary.

2. After that run your application as usual: mono MyApp.exe (no .so 
suffix).  If everything worked right, mono will notice that .so file and 
use it instead of JIT-ing the .exe assembly.

> I'm doing all of my development on a Windows 7 box, but I suppose that in
> order to perform a full AOT for OSX I need to perform the above steps on OSX
> which, according to Apple, has Xcode installed by default? Is there anything
> else that needs to be installed on the OSX box other than Mono itself in
> order to get this working? I'm really only interested in AOT on OSX, not
> Linux.

I believe you need Xcode to do this.  Other option might be using 
macports to pull only binutils package, but now that you mention no 
experience on Linux/OSX your best bet is using Xcode.


More information about the Mono-list mailing list