2014-08-13 10:39:27 +01:00
|
|
|
.\"
|
|
|
|
.\" mkbundle manual page.
|
|
|
|
.\" (C) 2004 Ximian, Inc.
|
|
|
|
.\" Author:
|
|
|
|
.\" Miguel de Icaza (miguel@gnu.org)
|
|
|
|
.\"
|
|
|
|
.de Sp \" Vertical space (when we can't use .PP)
|
|
|
|
.if t .sp .5v
|
|
|
|
.if n .sp
|
|
|
|
..
|
|
|
|
.TH mkbundle "mkbundle 1.0"
|
|
|
|
.SH NAME
|
|
|
|
mkbundle, mkbundle2 \- Creates a bundled executable.
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.PP
|
|
|
|
.B mkbundle [options] assembly1 [assembly2 ...]
|
|
|
|
.SH DESCRIPTION
|
|
|
|
\fImkbundle\fP 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.
|
|
|
|
.PP
|
2016-06-14 09:39:34 +00:00
|
|
|
There are two modes of operation, the default one uses the
|
|
|
|
C compiler to create a bundle and requires a complete C and Mono SDK
|
|
|
|
to produced executables. The simple mode (enabled when using the
|
|
|
|
"--simple") command line option does not require this, and also allows
|
|
|
|
for cross compilation.
|
|
|
|
.PP
|
|
|
|
For example, to create a bundle for hello world, use the following
|
|
|
|
command:
|
|
|
|
.nf
|
|
|
|
$ mkbundle -o hello --simple hello.exe
|
|
|
|
.fi
|
|
|
|
.PP
|
|
|
|
The simple version allows for cross-compiling, this requires a Mono
|
|
|
|
runtime to be installed in the ~/.mono/targets/TARGET/mono to be
|
|
|
|
available. You can use the "--local-targets" to list all available
|
|
|
|
targets, and the "--cross" argument to specify the target, like this:
|
|
|
|
.nf
|
|
|
|
$ mkbundle --local-targets
|
|
|
|
Available targets:
|
|
|
|
default - Current System Mono
|
|
|
|
4.4.0-macosx-x86
|
|
|
|
4.4.0-debian-8-arm64
|
2016-08-03 10:59:49 +00:00
|
|
|
$ mkbundle --cross 4.4.0-debian-8-powerpc hello.exe -o hello-debian
|
2016-06-14 09:39:34 +00:00
|
|
|
.fi
|
|
|
|
.PP
|
|
|
|
The above will bundle your native library into hello-debian for
|
2016-08-03 10:59:49 +00:00
|
|
|
a Debian 8 system running on a PowerPC machine.
|
2016-06-14 09:39:34 +00:00
|
|
|
.SH OLD EMBEDDING
|
2014-08-13 10:39:27 +01:00
|
|
|
.PP
|
|
|
|
For example, to create a bundle for hello world, use the following
|
|
|
|
command:
|
|
|
|
.nf
|
|
|
|
$ mkbundle -o hello hello.exe
|
|
|
|
.fi
|
|
|
|
.PP
|
|
|
|
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.
|
|
|
|
.PP
|
|
|
|
In addition, it is possible to control whether \fImkbundle\fP 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
|
|
|
|
statically:
|
|
|
|
.nf
|
|
|
|
$ mkbundle -c -o host.c -oo bundles.o --deps hello.exe
|
|
|
|
|
|
|
|
$ cc host.c bundles.o /usr/lib/libmono.a -lc -lrt
|
|
|
|
.fi
|
|
|
|
.PP
|
|
|
|
You may also use \fImkbundle\fP 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.
|
|
|
|
.SH OPTIONS
|
|
|
|
.TP
|
|
|
|
.I "-c"
|
|
|
|
Produce the stub file, do not compile the resulting stub.
|
|
|
|
.TP
|
2016-06-14 09:39:34 +00:00
|
|
|
.I "--cross target"
|
|
|
|
Creates a bundle for the specified target platform. The target
|
|
|
|
must be a directory in ~/.mono/targets/ that contains a "mono"
|
|
|
|
binary. You can fetch various targets using the --fetch-target
|
|
|
|
command line option.
|
|
|
|
.TP
|
2014-08-13 10:39:27 +01:00
|
|
|
.I "-o filename"
|
|
|
|
Places the output on `out'. If the flag -c is specified, this is the
|
|
|
|
C host program. If not, this contains the resulting executable.
|
|
|
|
.TP
|
|
|
|
.I "-oo filename"
|
|
|
|
Specifies the name to be used for the helper object file that contains
|
|
|
|
the bundle.
|
|
|
|
.TP
|
|
|
|
.I "-L path"
|
|
|
|
Adds the `path' do the search list for assemblies. The rules are the
|
|
|
|
same as for the compiler -lib: or -L flags.
|
|
|
|
.TP "--config FILE"
|
|
|
|
Specifies that a machine.config file must be bundled as well.
|
|
|
|
Typically this is $prefix/etc/mono/1.0/machine.config or
|
|
|
|
$prefix/etc/mono/2.0/machine.config depending on the profile that you
|
|
|
|
are using (1.0 or 2.0)
|
|
|
|
.TP
|
|
|
|
.I "--deps"
|
|
|
|
This option will bundle all of the referenced assemblies for the
|
|
|
|
assemblies listed on the command line option. This is useful to
|
|
|
|
distribute a self-contained image.
|
|
|
|
.TP
|
2016-06-14 09:39:34 +00:00
|
|
|
.I "--fetch-target target"
|
|
|
|
Downloads a precompiled runtime for the specified target from the Mono
|
|
|
|
distribution site.
|
|
|
|
.TP
|
|
|
|
.I "--nodeps"
|
|
|
|
This is the default: \fImkbundle\fP will only include the assemblies that
|
|
|
|
were specified on the command line to reduce the size of the resulting
|
|
|
|
image created.
|
|
|
|
.TP
|
2014-08-13 10:39:27 +01:00
|
|
|
.I "--keeptemp"
|
|
|
|
By default \fImkbundle\fP will delete the temporary files that it uses to
|
|
|
|
produce the bundle. This option keeps the file around.
|
|
|
|
.TP
|
2016-06-14 09:39:34 +00:00
|
|
|
.I "--lists-targets"
|
|
|
|
Lists all of the available local cross compilation targets available
|
|
|
|
as precompiled binaries on the Mono distribution server.
|
|
|
|
.TP
|
|
|
|
.I "--local-targets"
|
|
|
|
Lists all of the available local cross compilation targets.
|
|
|
|
.TP
|
2014-08-13 10:39:27 +01:00
|
|
|
.I "--machine-config FILE"
|
|
|
|
Uses the given FILE as the machine.config file for the generated
|
|
|
|
application.
|
|
|
|
.TP
|
|
|
|
.I "--nomain"
|
|
|
|
With the -c option, generate the host stub without a main() function.
|
|
|
|
.TP
|
|
|
|
.I "--config-dir DIR"
|
|
|
|
When passed, DIR will be set for the MONO_CFG_DIR environment variable
|
|
|
|
.TP
|
|
|
|
.I "--static"
|
|
|
|
By default \fImkbundle\fP dynamically links to mono and glib. This option
|
|
|
|
causes it to statically link instead.
|
|
|
|
.TP
|
2016-06-14 09:39:34 +00:00
|
|
|
.I "--target-server SERVER"
|
|
|
|
By default the mkbundle tool will download from a Mono server the
|
|
|
|
target runtimes, you can specify a different server to provide
|
|
|
|
cross-compiled runtimes.
|
2014-08-13 10:39:27 +01:00
|
|
|
.TP
|
|
|
|
.I "-z"
|
|
|
|
Compresses the assemblies before embedding. This results in smaller
|
|
|
|
executable files, but increases startup time and requires zlib to be
|
|
|
|
installed on the target system.
|
|
|
|
.SH WINDOWS
|
|
|
|
On Windows systems, it it necessary to have Unix-like toolchain to be
|
|
|
|
installed for \fImkbundle\fP to work. You can use cygwin's and install gcc,
|
|
|
|
gcc-mingw and as packages.
|
|
|
|
.SH ENVIRONMENT VARIABLES
|
|
|
|
.TP
|
|
|
|
.I "AS"
|
|
|
|
Assembler command. The default is "as".
|
|
|
|
.TP
|
|
|
|
.I "CC"
|
|
|
|
C compiler command. The default is "cc" under Linux and "gcc"
|
|
|
|
under Windows.
|
|
|
|
.TP
|
|
|
|
.I "MONO_BUNDLED_OPTIONS"
|
|
|
|
Options to be passed to the bundled
|
|
|
|
Mono runtime, separated by spaces. See the mono(1) manual page or run mono --help.
|
|
|
|
.SH FILES
|
|
|
|
This program will load referenced assemblies from the Mono assembly
|
|
|
|
cache.
|
2016-06-14 09:39:34 +00:00
|
|
|
.PP
|
|
|
|
Targets are loaded from ~/.mono/targets/TARGETNAME/mono
|
2014-08-13 10:39:27 +01:00
|
|
|
.SH BUGS
|
|
|
|
The option "--static" is not supported under Windows.
|
|
|
|
Moreover, a full cygwin environment containing at least "gcc" and "as"
|
|
|
|
is required for the build process. The generated executable does not
|
|
|
|
depend on cygwin.
|
|
|
|
.SH MAILING LISTS
|
|
|
|
Visit http://lists.ximian.com/mailman/listinfo/mono-devel-list for details.
|
|
|
|
.SH WEB SITE
|
|
|
|
Visit: http://www.mono-project.com for details
|
|
|
|
.SH SEE ALSO
|
|
|
|
.BR mcs(1), mono(1), mono-config(5).
|
|
|
|
|
|
|
|
|