Dans ce tutoriel, je vais vous montrer les bases de la compilation d’un programme sous linux. Derrière ce terme qui peut faire peur, se cache en réalité une opération assez simple à réaliser. La compilation permet de mieux comprendre le fonctionnement d’un système UNIX. Je vous encourage donc à vous lancer dans l’aventure !

Tout d’abord, quelques définitions…

La compilation consiste à transformer le code source d’une application, code écrit par un être humain dans un certain langage de programmation, en du code binaire compréhensible uniquement par l’ordinateur. Ce code binaire ou compilé (byte code) peut ensuite être exécuté par l’utilisateur.

Dans chaque distribution Linux, il existe un gestionnaire de logiciels, appelé aussi système de gestion de paquets, qui permet de télécharger très simplement des logiciels (APT sous Debian, RPM sous Fedora,…). Ces logiciels sont archivés sous la forme de paquets, chaque paquet contenant du code pré-compilé. L’avantage de ces paquets est, qu’après installation (automatique), le programme peut être exécuté de manière immédiate par l’utilisateur.

Vous allez me dire, pourquoi compiler si le gestionnaire de paquets fait déjà le boulot ? Et bien, je vois plusieurs raisons à cela :

  • Il peut arriver qu’une application ne soit pas dans les dépôts (les serveurs) de votre distribution. Le gestionnaire ne trouvera aucun paquet, et ne procèdera donc pas à une quelconque installation.
  • Des options permettent d’optimiser la compilation d’un programme. Il s’exécutera parfois plus vite qu’un programme pré-compilé disponible dans les dépôts.
  • L’installation de pilotes de périphériques sous Linux (cartes graphiques NVIDIA…) est en général une tâche fastidieuse et nécessite de compiler soi-même les drivers et leurs dépendances.
  • Juste pour le fun ! C’est une tâche plutôt gratifiante, surtout si vous avez eu un peu de mal et qu’au final ça tourne comme vous le souhaitiez !

Compilation d’un logiciel: gPodder

gpodder200

Un exemple vaut mieux qu’un grand discours, nous allons installer une application bien connue des amateurs de musique gPodder. Il s’agit d’un agrégateur de flux web (RSS, Youtube,…), qui permet à l’utilisateur d’organiser les fichiers téléchargés, et de les transférer facilement sur des périphériques compatibles. Il est entièrement écrit en langage Python.

gpodder

I-Récupérer le code source
La première étape consiste à récupérer le code source de l’application, généralement disponible sous la forme d’une archive (.zip, .tar.gz,…). Pour gPodder, les sources sont dans une archive .tar.gz, disponible à l’adresse suivante  http://gpodder.org/source/3.5.2

Vous avez au moins deux façons de faire pour télécharger ce fichier:

  • la manière classique, en copiant l’adresse dans votre navigateur
  • ou de manière plus « linuxienne » en utilisant le terminal de commandes

Voyons en détail la deuxième solution. Tout d’abord, lancez le terminal de votre distribution.

Puis, déplacez vous dans le répertoire qui contiendra les fichiers d’installation, avec la commande cd :

cd chemin/vers/mon_repertoire_installation

Ensuite, téléchargez l’archive en tapant la commande suivante :

wget http://gpodder.org/source/3.5.2

Le programme wget est un outil puissant qui permet de télécharger n’importe quel flux à partir de son adresse web (pages html, fichiers,…). Ici, nous avons téléchargé l’archive contenant les sources, et ce fichier est maintenant présent dans le répertoire d’installation.

Si vous n’avez pas la commande wget, pas de soucis! Elle est généralement disponible dans les dépôts par défaut de votre distribution.

Pour les systèmes de type APT, il faut taper:

sudo apt-get install wget

Pour les systèmes de type RPM, il faut taper:

sudo zypper install wget

Après avoir téléchargé les sources, décompressez l’archive avec la commande tar :

tar -xvf 3.5.2

Cette commande permet de compresser des fichiers et des dossiers sous la forme d’archive .tar.gz. Elle permet également de décompresser ce type d’archive. C’est ce que nous venons de faire avec les options suivantes:

  • x, pour extract: mode extraction des fichiers
  • v, pour verbose: affichage des fichiers compressés/décompressés
  • f, pour file: la cible est une archive

Le répertoire gpodder-3.5.2 a été automatiquement créé lors de la décompression. Pour terminer, déplacez-vous dans celui-ci :

cd gpodder-3.5.2

II-Compilation
Nous entamons l’étape que vous attendez tous: la compilation des sources !

Avant toute chose, je vous conseille de lire le fichier README présent dans la majorité des archives. Il contient de nombreuses informations utiles pour mener à bien la compilation:

  • les dépendances à installer (d’autres paquets)
  • les commandes permettant de compiler et tester l’application

Gpodder

II.1-Les dépendances

Sous les onglets DEPENDENCIES, BUILD DEPENDENCIES et TEST DEPENDENCIES, nous apprenons que certaines dépendances sont nécessaires avant toute compilation:

  • python-minimock
  • python-feedparser
  • python-mygpoclient
  • help2man
  • intltool

Pour simplifier ce tutorial, nous allons télécharger toutes ces dépendances par le gestionnaire de paquets, plutôt que de les compiler nous-même.

Pour les systèmes de type APT, il faut taper:

sudo apt-get install python-minimock python-feedparser python-coverage python-mygpoclient help2man intltool

Pour les systèmes de type RPM, il faut taper:

sudo zypper install python-minimock python-feedparser python-coverage python-mygpoclient help2man intltool

D’après l’onglet TESTING du Readme, nous apprenons que pour tester que tout va bien, il faut taper:

make unittest

Si tout s’est passé sans erreur, vous devriez voir ce qui suit:

Ran 24 tests in 0.040s OK

Au contraire, le message d’erreur suivant s’affiche s’il vous manque une dépendance (ici, python-feedparser):

Error: Module "feedparser" (python-feedparser) not found.

II.2-La compilation

Enfin, nous allons pouvoir compiler gPodder:

sudo make install

Vous vous en doutez, cette commande est indiquée dans la section RUNNING AND INSTALLATION du Readme. Si tout se passe bien, les exécutables sont automatiquement générés dans le dossier bin/.

Pour lancer l’application, rien de plus simple:

./bin/gpodder

Et voilà!

gpodder_1

Anth0kuto

Anth0kuto

gérant chez Byprog
Administrateur

Freelance Full-Stack Développeur, plus d'infos sur byprog.com !

Fervent linuxien depuis plus de 10 ans, je suis passionné par l'univers de l'open source et par la programmation en particulier. Ma mission si vous l'acceptez: vous emporter dans d'autres contrées!
Anth0kuto
La µSD, toute une Mount-agne (Partie 1)
Windows 7: Créer une image système