mkbundle generates an executable program that will contain
static copies of the assemblies listed on the command line. By
default only the assemblies specified in the command line will be
included in the bundle. To automatically include all of the
dependencies referenced, use the "--deps" command line option.
Use mkbundleP when you want the startup runtime to load the 1.0
profile, and use mkbundle2 when you want the startup runtime to load
the 2.0 profile.
For example, to create a bundle for hello world, use the following
$ mkbundle -o hello hello.exe
The above will pull hello.exe into a native program called "hello". Notice
that the produced image still contains the CIL image and no
precompilation is done.
In addition, it is possible to control whether mkbundle should compile
the resulting executable or not with the -c option. This is useful if
you want to link additional libraries or control the generated output
in more detail. For example, this could be used to link some libraries
$ mkbundle -c -o host.c -oo bundles.o --deps hello.exe
$ cc host.c bundles.o /usr/lib/libmono.a -lc -lrt
You may also use mkbundle to generate a bundle you can use when
embedding the Mono runtime in a native application. In that case, use
both the -c and --nomain options. The resulting host.c file will
not have a main() function. Call mono_mkbundle_init() before
initializing the JIT in your code so that the bundled assemblies
are available to the embedded runtime.