Retour au cours

compiler depuis les sources : make et autotools

Objectifs

  • Comprendre quand et pourquoi on pourrait avoir besoin de compiler un logiciel depuis son code source.
  • Connaître le triptyque classique d’installation : ./configure, make, make install.
  • Savoir comment installer les outils de compilation et les dépendances nécessaires.

Aujourd’hui, 99% de vos installations de logiciels se feront via un gestionnaire de paquets. Cependant, il est utile de comprendre le processus de compilation “à la main”, car vous le rencontrerez dans certaines situations.

Pourquoi compiler depuis les sources ?

  • Le logiciel n’est pas dans vos dépôts : C’est le cas pour des outils très récents, de niche, ou que vous développez vous-même.
  • Besoin d’une version spécifique : Vous avez besoin de la toute dernière version non encore packagée, ou au contraire d’une très ancienne version pour des raisons de compatibilité.
  • Options de compilation personnalisées : Vous voulez activer ou désactiver certaines fonctionnalités du logiciel qui ne sont pas incluses dans le paquet par défaut.

Prérequis : Les outils de développement

Pour compiler, vous avez besoin d’un compilateur (comme gcc) et de l’outil make. La plupart des distributions proposent un méta-paquet pour installer tout le nécessaire.

  • Sur Debian/Ubuntu : sudo apt install build-essential
  • Sur Fedora/CentOS : sudo dnf groupinstall "Development Tools"

De plus, le logiciel que vous compilez aura ses propres dépendances (ex: une librairie de compression, un toolkit graphique…). Il faudra les installer via votre gestionnaire de paquets. Ces dépendances de développement ont souvent un suffixe -dev ou -devel.

Le Triptyque : configure, make, make install

Le processus de compilation pour la plupart des logiciels open source suit ces trois étapes.

1. Télécharger et Extraire les sources

Vous commencez par télécharger une archive du code source (un fichier .tar.gz) et vous l’extrayez.

wget https://exemple.com/mon_logiciel-1.2.3.tar.gz
tar -xzvf mon_logiciel-1.2.3.tar.gz
cd mon_logiciel-1.2.3/

2. ./configure

À l’intérieur du dossier, vous trouverez un script nommé configure. Son rôle est de préparer la compilation :

  • Il vérifie que votre système possède bien toutes les dépendances nécessaires (les librairies, le bon compilateur…).
  • Il inspecte votre architecture système.
  • Il génère un Makefile, un fichier qui contient les instructions de compilation adaptées à votre machine.
./configure

Si cette étape échoue, le message d’erreur vous indiquera presque toujours quelle dépendance est manquante.

3. make

Cette commande lit le Makefile généré par ./configure et lance le processus de compilation. Elle appelle le compilateur (gcc) sur tous les fichiers source pour les transformer en un programme binaire exécutable.

make

Cette étape peut être très longue pour un gros projet.

4. sudo make install

Une fois la compilation terminée, vous avez un programme fonctionnel dans le dossier courant. La dernière étape est de le copier dans les bons dossiers du système pour qu’il soit accessible à tous.

sudo make install

Cette commande va copier le binaire dans /usr/local/bin, ses pages de manuel dans /usr/local/share/man, etc.

L’inconvénient majeur : La désinstallation

Le plus gros problème de cette méthode est que votre gestionnaire de paquets (apt, dnf) ne sait pas que ce logiciel a été installé. Il ne peut donc ni le mettre à jour, ni le désinstaller.

Pour le supprimer, il faut espérer que les développeurs aient prévu une cible de désinstallation :

# Revenir dans le dossier des sources
sudo make uninstall

Si cette commande n’existe pas, la désinstallation peut être très compliquée.

Bonnes pratiques

  • Toujours, toujours, toujours préférer le gestionnaire de paquets. Ne compilez depuis les sources qu’en dernier recours.
  • Lisez attentivement les fichiers README ou INSTALL fournis avec le code source. Ils contiennent les instructions spécifiques et la liste des dépendances.
  • Avant de lancer ./configure, installez les paquets -dev ou -devel des librairies dont vous pensez avoir besoin.

Exercices

  1. Installez les outils de base :

    • Exécutez la commande (apt ou dnf) pour installer les outils de développement sur votre système.
  2. (Théorique) Explorer un projet :

    • Allez sur GitHub et trouvez le code source d’un petit utilitaire en langage C, par exemple htop ou tree.
    • Téléchargez l’archive .tar.gz de la dernière release.
    • Extrayez-la et listez son contenu. Repérez le script configure et le fichier Makefile.in ou Makefile.am qui sert à le générer.
    • Lisez le fichier README pour voir la liste des dépendances.
    • (Bonus) Essayez de lancer ./configure. Observez les erreurs si des dépendances sont manquantes.