Compiler Mono sous Fedora

Mono est une implémentation libre du framework .Net, disponible pour Linux, Windows et Mac OS X. Cet article explique comment compiler Mono ainsi que l'IDE MonoDevelop à partir des sources. Cette méthode est en effet bien souvent nécessaire si l'on veut installer la dernière version du framework ou de l'IDE.

Commentez cet article : Commentez Donner une note à l'article (3)

Article lu   fois.

Les deux auteurs

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Mono est fourni sous forme de package pour les distributions Linux les plus courantes. Mais actuellement chaque nouvelle version n'est pas livrée sous forme d'un binaire qui serait compatible avec n'importe quelle distribution. Or la création des paquets est prise en charge par les mainteneurs des distributions. Ces paquets ne sont recréés que lorsque la distribution publie une nouvelle version, soit environ tous les 6 mois en ce qui concerne la Fedora. La dernière version de Mono n'est donc pas toujours disponible sous forme de paquets pour votre distribution. Nous allons donc voir dans cet article comment installer Mono et MonoDevelop à partir des sources. Ceci ne devrait pas être nécessaire pour l'utilisateur final, mais plutôt pour le développeur voulant profiter des dernières avancées.

I.1. Versions utilisées dans l'article

La procédure expliquée dans l'article m'a permis de compiler Mono 2.6.1 et Monodevelop 2.2.1 sur une Fedora 10. La procédure devrait être la même pour une version plus récente de la Fedora. Peut-être qu'il vous aidera aussi pour compiler Mono sur une autre distribution.

I.2. Prérequis

MonoDevelop étant basé sur Gtk#, qui est un binding en .Net de Gtk, son installation requiert de nombreuses librairies faisant partie de Gnome. Je considère dans l'article que Gnome est déjà installé sur votre machine. Si vous n'avez installé que Kde ou un autre environnement graphique, installez d'abord Gnome avant d'appliquer la procédure, à moins que vous ne vouliez installer que le framework Mono sans l'IDE, auquel cas vous n'avez pas besoin de Gnome. En revanche, j'explique comment installer les outils de compilation si vous ne les avez pas déjà.

II. Installation des outils de compilation et des fichiers d'en-tête

II.1. Les outils de compilation

Commencez par ouvrir un terminal, puis logguez-vous en root (commmande "su"). Vous devrez rester loggué en root pendant toute la procédure.

Pour compiler il vous faut les compilateurs gcc et gcc-c++, ainsi que make, autoconf et automake. Sous Fedora, pour savoir s'ils sont déjà installés, vous pouvez utiliser la commande rpm:

 
Sélectionnez

[root@localhost Romain]$ rpm -q gcc gcc-c++ make autoconf automake
gcc-4.3.2-7.i386
gcc-c++-4.3.2-7.i386
make-3.81-14.fc10.i386
autoconf-2.63-1.fc10.noarch
automake-1.10.1-2.noarch

La commande ci-dessus affichera les versions des paquets s'ils sont déjà installés. Si vous n'avez pas l'un de ces paquets, vous pouvez l'installer via la commande yum qui le téléchargera depuis les dépôts et l'installera. Par exemple, si vous n'avez aucun de ces 5 paquets déjà installés, faites:

 
Sélectionnez

[root@localhost Romain]$ yum install gcc gcc-c++ make autoconf automake

En installant gcc, yum vous installera automatiquement ses dépendances, dont glibc-devel et glibc-headers, qui vous seront également nécessaires pour la compilation.

II.2. Les fichiers d'en-tête

La compilation nécessite de nombreux fichiers d'en-tête contenus dans des paquets dont le nom, par convention, se termine par -devel. Vous devez donc installer tous ces paquets:

  • gtk2-devel
  • libglade2-devel
  • libtiff-devel
  • giflib-devel
  • libjpeg-devel
  • libpng-devel
  • libexif-devel
  • gtksourceview-devel

Les paquets suivants sont indiqués comme optionnels, ils vous permettront d'accéder en .Net à des bindings de certaines librairies liées à Gnome et Gtk. Je n'ai pas testé la compilation sans inclure ces paquets, dans le doute mieux vaut les installer:

  • libart_lgpl-devel
  • gnome-vfs2-devel
  • gnome-desktop-devel
  • gnome-panel-devel
  • gtkhtml3-devel
  • gtksourceview2-devel
  • nautilus-cd-burner-devel
  • lignomeprintui22-devel (ce qui installera automatiquement sa dépendance libgnomeprint22-devel)
  • vte-devel
  • librsvg2-devel
  • libwnck-devel
  • libXres-devel (doit être installé si vous installez libwnck-devel. Devrait être installé automatiquement par libwnck-devel, mais ce n'est pas le cas sur Fedora 10 à cause d'une erreur dans les dépendances)

III. Téléchargement des sources et extraction des archives

III.1. Où sont les sources ?

Les sources de la dernière version stable sont téléchargeables à cette adresse : http://ftp.novell.com/pub/mono/sources-stable/

Il se peut qu'il y ait une version plus récente de MonoDevelop et de ses composants sur sa page de téléchargement dédiée.

Voici l'ensemble des composants à télécharger qui vont être compilés dans cet article, dans l'ordre dans lequel ils doivent être compilés :

Source Description
libgdiplus Implémentation de GDI+.
mono Implémentation du framwork .Net.
gtk-sharp Binding .Net de Gtk+.
mono-addins Ensemble de classes permettant la création d'applications extensibles, utilisé par MonoDevelop.
gecko-sharp Permet d'embarquer le moteur de rendu Gecko dans les applications Gtk#.
gnome-sharp Binding de Gnome utilisé par MonoDevelop.
gnome-desktop-sharp Binding de Gnome utilisé par MonoDevelop.
gtksourceview-sharp Binding du widget Gtksourceview, utilisé par MonoDevelop.
monodevelop L'IDE pouvant supporter les langages C#, Visual Basic.Net, C/C++ et Vala.
mono-debugger Le débugger de Mono.
mono-debugger-gdb Pour déboguer les applications natives.
mono-debugger-mdb Pour déboguer les applications managées.

III.2. Extraire les archives

Pour extraire les archives, vous pouvez le faire avec un outil graphique comme File Roller, ou bien en ligne de commande, avec tar -xjf <nom de l'archive>.bz2 pour les archives d'extension tar.bz2 et avec unzip <nom de l'archive>.zip pour les archives d'extension .zip.

IV. La compilation et l'installation

IV.1. L'installation de Mono

Lors de l'installation d'un paquet de votre distribution, les fichiers sont extraits dans les différents répertoires de l'arborescence standard des systèmes Unix. C'est-à-dire qu'une partie des fichiers de l'application sera dans /usr/lib, une autre dans /usr/bin, etc...

Ici nous allons installer Mono et MonoDevelop dans le répertoire /usr/mono. Ainsi, tous les fichiers concernant Mono seront dans un sous-répertoire de /usr/mono. Bien sûr, vous pouvez choisir un autre répertoire. Ainsi, si vous choisissez /usr, les fichiers seront installés dans les différents sous-répertoires standards de /usr, un peu comme le ferait un paquet de votre distribution.

Commençons donc par créer le répertoire où Mono sera installé:

 
Sélectionnez

[root@localhost Romain]$ mkdir /usr/mono

Nous pouvons compiler le premier composant, libgdiplus. On se place dans le répertoire contenant les fichiers extraits :

 
Sélectionnez

[root@localhost mono]$ cd libgdiplus-2.6

Ensuite on exécute ces trois commandes:

 
Sélectionnez

[root@localhost mono]$ ./configure --prefix=/usr/mono
[root@localhost mono]$ make
[root@localhost mono]$ make install

La première commande prépare la compilation, la deuxième compile et la dernière copie les fichiers dans le répertoire d'installation. L'argument --prefix passé à la première commande indique dans quel répertoire Mono va être installé. Indiquez le bon répertoire si vous en avez choisi un autre.

L'installation de Mono se fait de la même façon, excepté que la compilation dure cette fois de 10 à 15 minutes environ:

 
Sélectionnez

[root@localhost mono]$ cd ../mono-2.6.1
[root@localhost mono]$ ./configure --prefix=/usr/mono
[root@localhost mono]$ make
[root@localhost mono]$ make install

IV.2. L'installation de MonoDevelop

Les prochains composants que nous allons compiler sont liés aux assemblies de Mono. Le script configure utilise la commande pkgconfig pour retrouver dans quels répertoires ces assemblies sont situés. Si vous avez installé Mono dans le répertoire /usr/mono, ces fichiers sont dans le répertoire /usr/mono/lib/pkgconfig. Parce que ce répertoire n'est pas standard, contrairement à /usr/lib/pgkconfig, nous devons l'ajouter dans la variable d'environnement PKG_CONFIG_PATH.

Nous devons également ajouter le répertoire /usr/mono/bin dans la variable PATH, car certaines commandes qui s'y trouvent vont être utilisées par les scripts d'installation de Gtk#.

Voici les commandes nécessaires pour modifier ces deux variables:

 
Sélectionnez

[root@localhost mono]$ export PKG_CONFIG_PATH=/usr/mono/lib/pkgconfig:$PKG_CONFIG_PATH
[root@localhost mono]$ export PATH=/usr/mono/bin:$PATH

Ces modifications sont temporaires, elles seront perdues au prochain redémarrage du système. Modifier leurs valeurs pour le compte root le temps de la compilation suffit. Mais nous verrons à la fin de cet article comment configurer les variables d'environnement nécessaires à l'utilisation de Mono de façon définitive.

Ensuite nous pouvons compiler et installer Gtk#, toujours selon le même principe:

 
Sélectionnez

[root@localhost mono]$ cd ../gtk-sharp-2.12.9
[root@localhost mono]$ ./configure --prefix=/usr/mono
[root@localhost mono]$ make
[root@localhost mono]$ make install

Puis Mono.Addins. Cette fois-ci nous passons deux options supplémentaires au script configure:

 
Sélectionnez

[root@localhost mono]$ cd ../mono-addins-0.4
[root@localhost mono]$ ./configure --prefix=/usr/mono --enable-gui --enable-tests
[root@localhost mono]$ make
[root@localhost mono]$ make install

Ensuite, en utilisant les mêmes commandes que pour gtk-sharp, vous pouvez installer les composants suivants:

  • gecko-sharp
  • gnome-sharp
  • gnome-desktop-sharp
  • gtksourceview-sharp

Puis nous passons à l'IDE MonoDevelop:

 
Sélectionnez

[root@localhost mono]$ cd ../monodevelop-2.2.1
[root@localhost mono]$ ./configure --prefix=/usr/mono --enable-tests
[root@localhost mono]$ make
[root@localhost mono]$ make install

Enfin, nous installons avec les commandes classiques ./configure --prefix=/usr/mono, make et make install le débugger de Mono et les composants du débugger de MonoDevelop:

  • mono-debugger
  • monodevelop-debugger-gdb
  • monodevelop-debugger-mdb

IV.3. Variables d'environnement nécessaires

L'installation est maintenant terminée. Mais nous avons installé Mono dans un répertoire non standard. Pour cette raison, nous devons configurer quelques variables d'environnement de telle sorte qu'elles aient les bonnes valeurs à chaque démarrage du système. Ouvrez avec votre éditeur favori le fichier .bashrc qui est dans le répertoire de l'utilisateur sous lequel vous allez utiliser Mono, par exemple /home/Romain/.bashrc et ajoutez-y les lignes suivantes :

 
Sélectionnez

export PATH=/usr/mono/bin:$PATH
export MANPATH=/usr/mono/share/man:$MANPATH
export LD_LIBRARY_PATH=/usr/mono/lib:$LD_LIBRARY_PATH

La 1ère ligne permet d'exécuter les commandes de Mono sans être obligé de préciser le chemin complet. La 2ème est pour l'accès aux pages de man, la 3ème est indispensable pour que l'exécution d'une application Mono soit possible dans notre cas, les librairies ne se trouvant pas dans un répertoire standard. Ces lignes doivent être adaptées si vous avez installé Mono dans un autre répertoire que /usr/mono.

Articles sur Visual Basic 6
Exemple de création d'un contrôle : le splitter
Utilisation de l'API mySQL
Exemple d'architecture à 3 couches
Créer des dll en C compatibles avec Visual Basic 6
Mes contributions à la faq VB

  

Copyright © 2010 Romain Puyfoulhoux. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.