Compiling Mono From SVN

Table of contents

Compiling from SVN is obsolete

Since the current mono version is beeing developed on github, the instructions here are obsolete. Check the compiling Mono from Git page instead.

For full details about checking out your source code, see: SVN Write Access and the Anonymous SVN access pages).

Checking out for the first time

If you are checking out Mono from SVN for the first time, you can use anonymous access:

  $ svn co http://anonsvn.mono-project.com/source/trunk/mono
  $ svn co http://anonsvn.mono-project.com/source/trunk/mcs
  $ svn co http://anonsvn.mono-project.com/source/trunk/libgdiplus

If you have an account on the main Subversion repository, use the following command:

 $ svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mcs
 $ svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/mono
 $ svn co svn+ssh://USER@mono-cvs.ximian.com/source/trunk/libgdiplus

Updating an existing checkout

 $ (cd mono; svn update) 
 $ (cd mcs; svn update) 
 $ (cd libgdiplus; svn update)

Building the source

Then, go into the mono directory, and configure:

  $ cd mono
  $ ./autogen.sh --prefix=/usr/local
  $ make
  $ make install

By running autogen.sh from the mono tree, it will automatically go into the mcs/ tree and build the binaries there, so you don't have to run it in both mono and mcs trees.

This assumes that you have a working mono installation, and that there's a C# compiler named 'mcs', and a corresponding IL runtime called 'mono'.

In order to use mcs and mono binaries during the build process which do not reside in your PATH, you can set two make variables, EXTERNAL_MCS and EXTERNAL_RUNTIME:

make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono

If you do not currently have mono installed, build and install mono from a recently released tarball.

The file mono/README contains more information about ways to compile Mono from the repository, consult it if you need more details.

Also to get the latest changes in System.Drawing.dll and System.Windows.Forms.dll you also need configure, build and install libgdiplus.

  $ cd libgdiplus
  $ ./autogen.sh --prefix=/usr/local
  $ make
  $ make install

If you use a different prefix then you may need to adjust your LD_LIBRARY_PATH environment variable to ensure libgdiplus.so can be loaded.

  export LD_LIBRARY_PATH=/your/own/prefix:$LD_LIBRARY_PATH