8 1. Compilation and Installation
9 ===============================
14 To build Mono, you will need the following components:
18 Available from: http://www.freedesktop.org/Software/pkgconfig
22 Available from: http://www.gtk.org/
24 On Itanium, you must obtain libunwind:
26 http://www.hpl.hp.com/research/linux/libunwind/download.php4
28 On Solaris, make sure that you used GNU tar to unpack this package, as
29 Solaris tar will not unpack this correctly, and you will get strange errors.
31 On Solaris, make sure that you use the GNU toolchain to build the software.
33 Optional dependencies:
37 If you want to get support for System.Drawing, you will need to get
40 b. Building the Software
41 ------------------------
43 If you obtained this package as an officially released tarball,
44 this is very simple, use configure and make:
46 ./configure --prefix=/usr/local
50 Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390, AMD64 and PowerPC systems.
52 If you obtained this as a snapshot, you will need an existing
53 Mono installation. To upgrade your installation, unpack both
56 tar xzf mcs-XXXX.tar.gz
57 tar xzf mono-XXXX.tar.gz
61 ./autogen.sh --prefix=/usr/local
64 c. Building the software from SVN
65 ---------------------------------
67 If you are building the software from SVN, make sure that you
68 have up-to-date mcs and mono sources:
70 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
71 svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
73 Then, go into the mono directory, and configure:
76 ./autogen.sh --prefix=/usr/local
79 This will automatically go into the mcs/ tree and build the
82 This assumes that you have a working mono installation, and that
83 there's a C# compiler named 'mcs', and a corresponding IL
84 runtime called 'mono'. You can use two make variables
85 EXTERNAL_MCS and EXTERNAL_RUNTIME to override these. e.g., you
88 make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
90 If you don't have a working Mono installation
91 ---------------------------------------------
93 If you don't have a working Mono installation, an obvious choice
94 is to install the latest released packages of 'mono' for your
95 distribution and try from the beginning.
97 You can also try a slightly more risky approach that should work
100 This works by first getting the latest version of the 'monolite'
101 distribution, which contains just enough to run the 'mcs'
102 compiler. You do this with:
104 make get-monolite-latest
106 This will download and automatically gunzip and untar the
107 tarball, and place the files appropriately so that you can then
112 To ensure that you're using the 'monolite' distribution, you can
113 also try passing EXTERNAL_MCS=false on the make command-line.
115 Testing and Installation
116 ------------------------
118 You can run (part of) the mono and mcs testsuites with the command:
122 All tests should pass.
124 If you want more extensive tests, including those that test the
125 class libraries, you need to re-run 'configure' with the
126 '--enable-nunit-tests' flag, and try
130 Expect to find a few testsuite failures. As a sanity check, you
131 can compare the failures you got with
133 http://go-mono.com/tests/displayTestResults.php
135 You can now install mono with:
139 Failure to follow these steps may result in a broken installation.
144 Once you have installed the software, you can run a few programs:
158 See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
165 Technical documents about the Mono runtime.
168 Configuration files installed as part of the Mono runtime.
171 The core of the Mono Runtime.
174 The object system and metadata reader.
177 The Just in Time Compiler.
180 CIL executable Disassembler
183 Common code for the JIT and the interpreter.
186 The I/O layer and system abstraction for
187 emulating the .NET IO model.
190 Common Intermediate Representation, XML
191 definition of the CIL bytecodes.
194 Interpreter for CLI executables.
197 Architecture specific portions.
201 Manual pages for the various Mono commands and programs.
205 Scripts used to invoke Mono and the corresponding program.
209 A directory that contains the Makefiles that link the
210 mono/ and mcs/ build systems.