Cette page n'a pas encore d'étiquettes.
Apportez votre aide…

Ceci est une ancienne révision du document !


Versions: toutes

Compilation d'un logiciel ou d'une bibliothèque

Compiler soi-même un logiciel ou une bibliothèque peut apporter quelques avantages, mais est souvent à éviter pour le néophyte du monde linuxien. Cette documentation présente une méthode généraliste et vulgarisée pour compiler des programmes et des bibliothèques. Elle devrait être utilisée, le plus fréquemment, lorsque les autres méthodes d'installation de programmes ont échoué:

  1. Le système de gestion de paquets APT permet d'installer simplement énormément de logiciels répondant aux besoins quotidiens de l'utilisateur moyen. Lorsque possible, privilégiez cette méthode!
  2. Si un logiciel n'est pas disponibles dans les dépôts APT par défaut d'Ubuntu, il est peut-être disponible en paquet Ubuntu (.deb) sur un autre dépôt ou directement sur le site du distributeur du logiciel. Vérifiez si un paquet est disponible sur le site du distributeur.
  3. Si un logiciel n'existe pas en paquet .deb mais est disponible en d'autres types de paquets (.rpm, .slp, .tgz), le logiciel alien est d'une bonne utilité.
  4. Plus rarement, certains distributeurs vont distribuer leurs logiciels sous forme de paquet pour Autopackage. Cette méthode d'installation reste simple, mais n'est pas toujours très propre.
  5. Enfin, d'autres distributeurs, comme Mozilla, publient leurs logiciels sous forme de code binaire, donc déjà compilé.

Lorsque aucune de ces possibilités est valable pour le programme que vous cherchez à installer, vous devrez alors passer par la compilation. Le mot est gros et semble effrayant, mais l'est moins qu'il n'y paraît; essayons de démystifier ensemble ce procédé.

Sous GNU/Linux, comme pour tout autre système d’exploitation, les logiciels doivent être compilés avant de pouvoir être utilisés. « Compilation » est le nom d'une procédure permettant de transformer du code source, un ensemble d'instructions compréhensibles par les programmeurs, en code binaire, compréhensible uniquement par votre ordinateur. L'ordinateur est incapable de comprendre directement du code source: il doit donc être "traduit" de façon à ce que la machine puisse l'interpréter.

Ce procédé est souvent long, lourd et rebutant pour le nouvel arrivant sous Linux, car il n'a probablement jamais eu à en faire sous son ancien système d'exploitation. Sous Microsoft® Windows®, par exemple, il n’est pratiquement jamais requis de votre part que vous compiliez vos logiciels, les éditeurs de programmes proposant des installateurs (le fameux install.exe ou setup.exe) qui contiennent le programme compilé et une procédure qui copie les fichiers du programme au bon endroit sur votre disque dur. Or, sous Linux, il n’existe pas d'install.exe. Des alternatives plus simples et conviviales ont été créées pour éviter à l'utilisateur moyen de devoir compiler: c'est le cas du système de gestion de paquets APT.

Seulement, tout n'est pas toujours disponible à l'aide d'un de ces systèmes simplifiés. C'est le cas, par exemple, de certains pilotes pour vos périphériques ou encore de logiciels en cours de développement. Ubuntu étant une distribution orientée poste de travail et visant à être accessible à tous, nous espérons que que vous aurez essayé les autres méthodes disponibles auparavant, la compilation représente la dernière solution à vos problèmes.

Ubuntu n'inclut pas, de base, tous les outils nécessaires pour procéder à la compilation de logiciels et bibliothèques. Ces outils peuvent toutefois être installés à l'aide de Synaptic ou de apt-get, car ils se trouvent sur le CD-ROM d'installation de Ubuntu, de même que dans les dépôts APT officiels. Le méta-paquet à charger se nomme build-essential.

Nous vous proposons aussi d'installer les paquets fakeroot et checkinstall (nous assumerons supposerons que vous les aurez installés dans nos explications suivantes). L'outil checkinstall surveille la procédure d'installation et crée un paquet .deb qui sera présent dans votre liste de paquets installés. Ceci aura pour avantage de vous permettre une désinstallation simplifiée et propre (à l'aide de Synaptic ou apt-get), si vous souhaitez désinstaller ultérieurement vos logiciels et bibliothèques.

Donc, les prérequis sont build-essential, fakeroot et checkinstall, installables à l'aide de Synaptic. Vous pourrez aussi préférer l'interface apt-get:

$ sudo apt-get install build-essential fakeroot checkinstall

Le code source d'un logiciel en version stable est habituellement disponible sous forme d'archive compressée au format .tar.bz2 ou tar.gz, voire .zip. Certaines personnes (particulièrement des développeurs) vont préférer récupérer la toute dernière version de développement du logiciel (avec toutes les complications qu'il peut contenir); celle-ci peut être récupérée depuis un dépôt CVS ou, plus rarement, SVN.

Si le système APT récupère toutes les dépendances d'un logiciel, ce n'est pas le cas lorsque vous effectuez vous-même une compilation. Parcourez bien le site du projet et les pages de documentation afin de savoir quelles dépendances nécessite le logiciel (freéquemment, vous en trouverez aussi une liste dans le fichier README se trouvant dans l'archive contenant le code source). Beaucoup de paquets de développement sont disponible dans les dépôts APT accessibles à l'aide de Synaptic ou de apt-get. Notez bien que vous devez récupérer les paquets de développement: ils se terminent par -dev dans Synaptic.
Par exemple si le logiciel dispose d'une interface graphique en GTK+, il vous faut les bibliothèques de développement GTK+. En général, le nom du paquet à récupérer a la forme nom_de la dépendance-dev et se trouve dans Synaptic; dans notre exemple, le paquet à installer se nomme libgtk2.0-dev.

S'il vous manque des dépendances, le logiciel ne sera pas compilé correctement. Le processus se terminera par un échec dès qu'une dépendance est manquante. De façon générale, le message d'erreur retourné (dans les quelques dernières lignes) indique clairement quelle dépendance est manquante. Notez alors ce message d'erreur et recherchez cette dépendance à satisfaire dans Synaptic. Recommencez ensuite le processus de compilation. S'il s'arrête de nouveau, vérifiez si une autre dépendance n'est pas satisfaite. (C'est certainement pour cette raison (des dépendances insatisfaites) que la compilation est considérée comme longue et fastidieuse.)

Archive contenant le code source

Une fois téléchargée, décompressez l'archive dans votre dossier personnel ou ailleurs (par exemple, dans /opt, qui est une place toute indiquée à cet effet) soit à l'aide d'un outil graphique tel File-Roller, soit à l'aide de la commande suivante, dans un terminal:

  • Pour les archives .tar.gz:
    $ tar xzfv nom_de_l'archive.tar.gz
  • Pour les archives .tar.bz2:
    $ tar xjfv nom_de_l'archive.tar.bz2

Astuce: N'hésitez pas a utiliser la touche [Tab] de votre clavier pour compléter automatiquement le nom de commandes et de fichiers dans votre terminal ;-)

Depuis un dépôt CVS ou SVN

La procédure pour récupérer un code source depuis un dépôt CVS ou SVN varie d'une place à une autre. Les instructions pour récupérer le code source sont indiquées, dans la plupart des cas, sur la page des téléchargements du site du logiciel concerné ou dans les pages pour développeurs.

D'ordre général, la compilation d'un logiciel s'effectuera de la façon suivante:

$ cd /chemin_vers_le_répertoire_des_sources
$ ./configure
$ make
$ sudo checkinstall

Voyons en étape cette procédure:

  1. D'abord, il faut se rendre dans le répertoire dans lequel se trouve le code source du logiciel ou de la bibliothèque à compiler.
  2. Ensuite, on appelle le programme configure se trouvant dans ce même répertoire. Celui-ci vérifie que toutes les dépendances du logiciel ou de la bibliothèque à compiler sont bien satisfaites. Si certaines ne sont pas satisfaites, le programme s'arrête en indiquant ce qui est manquant pour continuer la procédure.
    C'est aussi à cette étape que peuvent être passées des options de configuration, comme nous l'avons vu dans une étape précédente.
  3. Puis, on appelle le compilateur par la commande make, qui se charge de construire du code binaire, compréhensible par votre machine. C'est certainement l'étape la plus longue.
  4. Finalement, le code binaire étant généré, il ne reste qu'à installer le logiciel ou la bibliothèque. On appelle le programme checkinstall (qui nécessite les droits du super-utilisateur), qui surveille son installation et génère, à la fin, un paquet .deb qui sera présent dans votre gestionnaire de paquets Synaptic. Ceci est pratique afin de vous permettre une désinstallation aisée et propre de votre logiciel.

ATTENTION : Cette procédure se veut généraliste. Il y a presque systématiquement un fichier README et/ou INSTALL présent dans le répertoire contenant le code source de votre logiciel; lisez-le bien. Outre les différentes dépendances à satisfaire pour compiler le logiciel, ces fichiers vous expliquent comment compiler le logiciel de la façon la plus efficace, la plus optimisée. La procédure ./configure && make && sudo checkinstall n'est pas forcément universelle et certains logiciels se compilent de façon différente. (Notez aussi que, dans certains cas, des applications ne se compilent pas: c'est le cas, par exemple, des scripts shell, Perl, Python, Java et autres.)

  • installation/compilation.1166369246.txt.gz
  • Dernière modification: Le 18/04/2011, 14:49
  • (modification externe)