AOT compilation

Gentoo Mono Handbook
 
http://www.mono-project.com/docs/advanced/runtime/#ahead-of-time-compilation

http://www.mono-project.com/docs/advanced/aot/
"In some operating system configurations (mostly embedded systems) the operating system services for generating code dynamically are not available, this prevents Mono’s JIT from working."

http://stackoverflow.com/questions/5311515/gcc-fpic-option
GCC's -fPIC = "Position Independent Code means that the generated machine code is not dependent on being located at a specific address in order to work."

http://www.mono-project.com/docs/advanced/runtime/docs/aot/
image-writer.c. It can either emit assembly code (.s), or it can produce a shared image directly.

To compile your assemblies with this, just run this command:
$ mono -O=all --aot program.exe
turn on all optimizations (-O=all) and
then instructs Mono to compile the code to native code.

if you want to do full static builds (and be able to run without the JIT engine),
you can use:
$ mono -O=all --aot --full-aot program.exe

Then you can configure your Mono runtime with
–enable-minimal to remove the JIT engine.

Some features like Reflection.Emit
and other forms of dynamic code generation are not support in this scenario.