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
READMEouINSTALLfournis avec le code source. Ils contiennent les instructions spécifiques et la liste des dépendances. - Avant de lancer
./configure, installez les paquets-devou-develdes librairies dont vous pensez avoir besoin.
Exercices
-
Installez les outils de base :
- Exécutez la commande (
aptoudnf) pour installer les outils de développement sur votre système.
- Exécutez la commande (
-
(Théorique) Explorer un projet :
- Allez sur GitHub et trouvez le code source d’un petit utilitaire en langage C, par exemple
htopoutree. - Téléchargez l’archive
.tar.gzde la dernière release. - Extrayez-la et listez son contenu. Repérez le script
configureet le fichierMakefile.inouMakefile.amqui sert à le générer. - Lisez le fichier
READMEpour voir la liste des dépendances. - (Bonus) Essayez de lancer
./configure. Observez les erreurs si des dépendances sont manquantes.
- Allez sur GitHub et trouvez le code source d’un petit utilitaire en langage C, par exemple