Compiler les sources


Je vais vous décrire dans cet article pourquoi et comment on compile des programmes sous GNU/Linux.

  1. Préalables
  2. Introduction
  3. Compilation
  4. Exécution
  5. Compiler à la souris?
  6. Protocole CVS et Subversion
  7. Désinstaller une application
  8. Liens

Préalables
  • Si vous êtes débutant(e), avant de chercher à compiler une application, vérifiez que celle-ci n'est pas disponible via l'installateur de paquetages de votre distribution. C'est beaucoup plus simple et rapide...
  • Lisez l'article sur la console, histoire de comprendre ce que vous faites.
  • Il faut un environnement minimal de dévellopement installé. Notamment les sources du noyau Linux et le compilateur gcc. Utilisez l'installateur de paquetages de votre distribution. Quand vous installez votre distribution, c'est toujours une bonne idée (si disponible) de sélectionner pour installation les paquets 'développement'.


Introduction

C'est quoi compiler ?

Un logiciel est écrit dans un language de programmation (comme le C++) . Ces sources doivent être traduites (=compilées) en binaire (suite de 0 et de 1) pour que votre ordinateur puisse les interpreter.
Idem sous Windows. La différence ici c'est que les sources sont à priori publiques et gratuites. Vous pouvez donc créer des executables en compilant les sources publiques d'une application et adapter le tout pour votre environnement (distribution, matériel notamment).

La plupart du temps, il existe des paquetages pré-compilés qui permettent l'installation du logiciel (comme un setup.exe si vous voulez). Cependant, s'ils n'existent pas dans un cas précis ou que vous souhaitiez optimiser votre système, il faudra compiler alors les sources de cette application. Notez que certains projets (exemple Cedega de Transgaming) font payer les paquetages compilés mais laisse un accès aux sources CVS (voir plus bas).

Les paquetages sont pré-compilés pour des architectures de processeurs bien précises (i386 par exemple). Si votre ordinateur est plus récent, compiler des sources pour i686 (pentium IV) ou x86_64 (amd64) rend l'application plus rapide. La rétro-compatibilité empêche votre CPU de donner toute sa mesure.


Les dépendances

La plupart des logiciels sous Linux s'appuient sur d'autres programmes (souvent des commandes consoles d'ailleurs) ou des librairies. On parle de 'dépendances'. C'est pour ça d'ailleurs que les softs sont légers car les dévellopeurs n'ont pas besoin de tout refaire dans le programme : ils peuvent utiliser les softs libres existants.

Le principal souci avec la compilation des sources, c'est que l'installation des dépendances n'est pas automatique. Ainsi, la recherche de dépendances s'apparente parfois à une quête !

Exemples :
  • le fatiguant "A" demande "B" qui demande "C'" qui demande "D" .
  • le divertissant "A" demande "B" qui demande "A" . Souvent du à un bug sur un serveur.
La bonne nouvelle c'est qu'au bout d'un certain temps, on finit par avoir une belle collection de dépendances et que la quête est résolue d'avance !

Un des problèmes classiques est d'avoir une mauvaise version d'une dépendance. Assurez vous que vous utilisez des sources récentes (programme et dépendances). Parfois un programme refuse de compiler parce qu'il existe une vieille version pré-compilée d'une dépendance alors même que vous venez juste de compiler une version plus récente de cette dépendance. Dans ce cas, désinstallez la vieille version en recourant à votre installateur de paquetages. Ce sera parfois impossible parce que l'installateur voudra vous enlever plein d'autres choses (la dépendance peut-être multiple)...

La dépendance incontournable pour compiler : les sources du noyau Linux. Il faut également que le compilateur gcc soit présent.


Compilons !

Les sources d'un logiciel se trouvent la plupart du temps sous une forme archivée (format tar.bz2, tar.bz, zip, rar etc). Il faut donc d'abord les décompresser (lire ce tutoriel). Je vais partir de 3 principes dans mon exemple :
  • l'archive est au format tar.bz2. Sinon adaptez.
  • Cette archive téléchargée est placée sur votre bureau.
  • Vous souhaitez installer le logiciel dans votre /home.

Ouvrez une console et faites :

$­­­­­­­­­­­­ cd ~
Vous vous placez dans le dossier /home/votre_login

$­­­­­­­­­­­­ tar xvjpf ~/Desktop/nom_de_l'archive.tar.bz2
Décompression de l'archive présente sur le bureau. Un répértoire du même nom sera sûrement créé.

$­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ cd nom_du_logiciel
Vous rentrez alors dans le dossier nouvellement créé (à priori donc /home/votre_login/nom_du_logiciel

$­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ./configure
Ceci lance un script qui va construire des fichiers de configuration et rechercher les dépendances nécessaires au logiciel. Souvent, il est possible (voire nécessaire) d'ajouter (on dit 'passer') des options au ./configure. C'est indiqué à priori dans le fichier d'aide (readme). Si une dépendance est absente, la commande stoppera avec un message d'erreur. Lisez le attentivement : cela doit vous indiquer le nom de la dépendance absente. Vous devrez l'installer au préalable puis recommencer : cherchez via votre installateur de paquetage ou bien par un paquet isolé (faites une recherche) ou bien encore en compilant ses sources (idem faites une recherche pour ces sources).

$­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ make
Ceci compile l'executable en utilisant les informations générées par configure. Là encore, l'absence d'une dépendance est la principale cause de plantage, mais là les message d'erreur sont plus obscurs. Attention, la compilation prends du temps...

$­­­­­­­­­ su -c make install
Cette dernière étape est facultative mais permet "d'appeller" le logiciel en console à partir de n'importe quel dossier. La modification de la 'table des matières' étant réservée à root, le mot de passe administrateur vous sera demandé. Sous Ubuntu, il faudra à la place taper sudo make install et rentrer le mot de passe utilisateur.



Exécuter l'application

Regardez le contenu du dossier dans lequel vous avez fait la compilation. Recherchez le nom de l'executable créé. Il suffit alors de taper ce nom en console. Exemple avec Firefox :

$­­­­­­­­­­­­­­ cd ~/Programmes/Firefox
Rentre dans le bon répertoire. C'est inutile si vous avez suivi l'étape 'make install'.

$­­­­­­­­­­­­­­ ./firefox
Execute l'executable 'firefox'. Parfois il suffit de taper la commande sans le ./

Vous pouvez bien sûr créer une icône de raccourci dans votre barre de tâches, dans le menu KDE/Gnome ou sur votre bureau.


Compiler à la souris ?

Et oui c'est possible ! Grâce au logiciel Kompile. J'ai trouvé cette petite perle ici et voici le site officiel (en italien). Le soft lui même est en anglais. Vous pouvez :
  • télécharger ses sources (version 0.2) et les compiler (oui je sais on tourne un peu en rond là ).
  • ou bien télécharger un paquetage pré-compilé RPM (version 0.2) ou DEB (version 0.2).
Une fois installé, faites un clic droit sur une archive tar (contenant le logiciel que vous voulez installer) puis actions > Automatic Package Install. Vous voyez alors cette fenêtre :



En gros, Kompile vous demande de vous logguer en root pour pouvoir faire l'étape de make install. C'est donc recommandé (1ère option). Si vous souhaitez ne pas faire cette étape, et bien ma foi la 2èm (ou la 3èm : vous spécifiez le répertoire de destination) sera donc suffisante. Cliquez alors sur Install.



Le soft décompresse alors l'archive puis fait le ./configure, le make et enfin le make install. Tout seul comme un grand . Evidemment s'il manque une librairie, il stoppe. Regardez alors les détails pour savoir le problème.

Ce soft est une interface graphique, pas un magicien. S'il faut passer des options au ./configure ou bien faire de la chirurgie, ca ne fonctionnera pas. D'autre part, comme c'est un projet en dévellopement, mieux vaut mettre à jour ce soft régulièrement. Mais avouez, c'est plutôt sympa non ?


CVS et Subversion

L'usage de versions cvs ou svn vous permet de profiter des dernières nouveautés d'un logiciel. Ces versions peuvent comporter des bugs et ne sont pas recommandées pour un système stable.

CVS

CVS (Concurrent Versions System) est un logiciel libre, distribué sous license GPL, gérant les versions d'applications. Il est utilisé par de nombreux développeurs pour mettre à jour les sources sur lesquelles ils travaillent. Il donne aussi la possibilité aux utilisateurs d'importer les toutes dernières versions de développement dans le but de compiler un logiciel très à jour.

Prenons un exemple : nous allons importer les sources du logiciel mplayerplug-in. L'importation se déroule normalement en 2 étapes: le login et le téléchargement.

1) Le login :

$­­­­­­ cvs -d:pserver:anonymous@mplayerplug-in.cvs.sourceforge.net:/
cvsroot/mplayerplug-in login

Le login s'effectue ici en anonyme sur le serveur de SourceForge et nous nous connectons sur les sources du projet mplayerplug-in.

2) Le téléchargement :

$­­­­­ cvs -z3 -d:pserver:anonymous@mplayerplug-in.cvs.sourceforge.net:/cvsroot/
mplayerplug-in co -P mplayerplug-in

La dernière option contient le module à importer. Dans ce cas, nous importons le projet en entier. Vous auriez pu importer seulement un fichier précis. Ensuite, il ne vous reste qu'à compiler ces sources fraiches .


Pour mettre vos sources à jour :

$­­­­­­ cvs update


Ces commandes sont, il faut l'avouer, un peu compliquées. Sachez toutefois que si le projet utilise le cvs comme protocole et permet le téléchargement des sources de développement, la commande exacte pour obtenir ces sources sera normalement disponible dans la section téléchargement du projet. Consultez l'article de wikipédia si vous désirez plus de détails.

SUBVERSION

Subversion est également un logiciel de gestion et de contrôle des versions. Il a été développé en février 2000 pour combler les lacunes et remplacer le protocole CVS. Contrairement au CVS, il permet de placer des numéros de version précis, de contrôler ceux-ci avec efficacité et permet également de renommer les fichiers présents sur le serveur distant.

Exemple : nous importons les sources du logiciel Music on Console (MOC). Une seule commande suffit pour se connecter en anonyme et télécharger les sources :

$­­­­­­ svn co svn://daper.net/moc/trunk

Vous pouvez constater la simplicité de la syntaxe. Si vous désirez mettre à jour vos sources plus tard:

$­­­­­­ svn update

En général, il vous suffit de consulter la page de téléchargement pour obtenir l'adresse précise du serveur svn du projet que vous désirez importer. Lorsque le téléchargement est terminé, passez à l'étape de la compilation. Consultez la page de wikipédia pour plus de détails.


Désinstaller une application compilée par vos soins

C'est pas très dur : supprimez le dossier que vous avez créé pour l'application...

Si lors de la compilation, vous avez fait l'étape 'make install', vous pouvez aussi enlever le lien symbolique présent dans /usr/bin (à priori). C'est pas super important, c'est juste pour ceux qui aiment l'ordre . Pour voir ce lien, faites par exemple pour Firefox :

$­­­­­­ ls -l /usr/bin | grep firefox
Exemple de réponse :
lrwxrwxrwx 1 root root 10 May 22 19:34 firefox -> /home/george/firefox/firefox

Si la commande répond le lien vers l'application que vous aviez compilé, supprimez ce lien :

$­­­ su -c­­­ rm /usr/bin/firefox
Vous devrez entrer le mot de passe admin (root).



Liens

Rechercher les projets sources.
Lea-linux (tutoriel sur la compilation)
Très bon tuto sur la compilation.
linuxnoob.freezee.org (idem)
FreshMeat : recence beaucoup de projets GNU à télécharger.
SourceForge : idem.
Article sur Subversion
Auteur: Luteola
Contributeur: Shaika-Dzari

Date de création : 02/06/2024 @ 19:25
Dernière modification : 29/09/2024 @ 10:28
Catégorie :
Page lue 7132 fois


 Prévisualiser      Imprimer l'article

Réactions à cet article


Réaction n°3 

par Wolfrod le 04/03/2024 @ 20:24

GGrand merci pour ce dictaticiel simple à comprendre et complet.


Réaction n°2 

par otax le 31/10/2024 @ 21:13

Très bien écrit pour un débutant comme moi.
Par contre le niveau se corse rudement à partir de CVS/SVN et là je décroche pour le moment. Je reprendrai là plus tard.

Pourtant guidelinux est le premier site qui me permet de lire autant de texte sans être trop vite bloqué.
Dans l'univers Linux pour débutant, on a malheureusement trop souvent le sentiment que l'auteur oublie son  rôle pédagogique et largue le newbie par quelques commandes ou actions trop en avance sur le niveau du lecteur.

Mais en tous cas, bravo !


Réaction n°1 

par dom le 14/08/2024 @ 10:40

Bravo pour cet article très clair et complet!
J'ignorais complètement comment se faisait une compilation.. je crois que cela va bien m'aider.


News RSS du Libre
Infos Site

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


  346 membres


Connectés :

( personne )
Recherche




Sondage
Quelle distribution utilisez vous le plus ?
 
Mandriva
Mepis
Ubuntu &Cie;
SuSE
Debian
Knoppix/Kaella
Xandros
Gentoo
Fedora
Autres
Résultats
Compteur

   visiteurs

   visiteurs en ligne

Divers
GuppyTop

Soutien
Site de Doudou
Site de Garulfo
Anupaz
Haut