Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:compilation [Le 17/05/2013, 10:16]
193.57.110.171 [Installer un logiciel ou une bibliothèque par compilation]
tutoriel:compilation [Le 13/02/2024, 11:06] (Version actuelle)
82.66.54.102 [Récupérer le code source]
Ligne 1: Ligne 1:
-{{tag>Hardy compilation paquet tutoriel}}+{{tag> compilation paquet tutoriel}}
 ---- ----
  
Ligne 6: Ligne 6:
 En informatique,​ la **compilation** (d'un logiciel ou d'une bibliothèque) est une procédure par laquelle un code source (format compréhensible par un humain, type [[#ASCII]]) est transformé en code [[#​binaire]],​ un langage compréhensible par votre ordinateur, dans le but d'​être exécuté. ​ Un logiciel est compilé afin de pouvoir être lancé par l'​utilisateur. En informatique,​ la **compilation** (d'un logiciel ou d'une bibliothèque) est une procédure par laquelle un code source (format compréhensible par un humain, type [[#ASCII]]) est transformé en code [[#​binaire]],​ un langage compréhensible par votre ordinateur, dans le but d'​être exécuté. ​ Un logiciel est compilé afin de pouvoir être lancé par l'​utilisateur.
  
-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é**:+<​note>​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.</​note>​ 
 + 
 +Cette documentation présente une méthode //​généraliste//​ et //​vulgarisée//​ pour compiler des programmes et des bibliothèques. 
 +<note important>​Elle devrait être utilisée, le plus fréquemment,​ **lorsque les autres méthodes d'​installation de programmes ont échoué**:</​note>​
  
   - Le [[:​apt|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 c'est possible, //​**privilégiez cette méthode**//​!   - Le [[:​apt|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 c'est possible, //​**privilégiez cette méthode**//​!
-  - Si un logiciel n'est pas disponible dans les dépôts APT par défaut d'​Ubuntu,​ il est peut-être disponible en [[:​apt#​le_paquet|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. +  - Siun logiciel n'est pas disponible dans les dépôts APT par défaut d'​Ubuntu,​ il est peut-être disponible en [[:​apt#​le_paquet|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. 
-  - 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é+  - Siun 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é.
-  - 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.+
   - Enfin, d'​autres distributeurs,​ comme [[http://​www.mozilla.com|Mozilla]],​ publient leurs logiciels sous forme de [[:​wiki:​glossaire#​binaire|code binaire]], donc déjà compilé.   - Enfin, d'​autres distributeurs,​ comme [[http://​www.mozilla.com|Mozilla]],​ publient leurs logiciels sous forme de [[:​wiki:​glossaire#​binaire|code binaire]], donc déjà compilé.
  
-Lorsque aucune de ces possibilités n'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é.+<​note>​Lorsque aucune de ces possibilités n'est valable pour le programme que vous cherchez à installer, vous devrez alors passer par la compilation. ​</​note>​ 
 +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é.
  
  
Ligne 32: Ligne 35:
 Nous vous suggérons aussi d'​installer les paquets « fakeroot » et « checkinstall » et nous supposerons que vous les aurez installés. 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, si vous souhaitez désinstaller ultérieurement vos logiciels et bibliothèques. Nous vous suggérons aussi d'​installer les paquets « fakeroot » et « checkinstall » et nous supposerons que vous les aurez installés. 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, si vous souhaitez désinstaller ultérieurement vos logiciels et bibliothèques.
  
-En résumé, vous devriez [[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt>​build-essential|build-essential]]** **[[apt>​fakeroot|fakeroot]]** **[[apt>​checkinstall|checkinstall]]**.+En résumé, vous devriez [[:​tutoriel:​comment_installer_un_paquet|installer les paquets]] **[[apt>​build-essential|build-essential]]** **[[apt>​fakeroot|fakeroot]]** **[[apt>​checkinstall|checkinstall]]** ​ .
  
  
Ligne 93: Ligne 96:
  
 Pour compiler un programme sans utiliser sudo rajouter l'​utilisateur au groupe src. Pour compiler un programme sans utiliser sudo rajouter l'​utilisateur au groupe src.
-<​code>​+<​code ​bash>
 sudo usermod -aG src user sudo usermod -aG src user
 </​code>​ </​code>​
  
 D'​ordre général, la compilation d'un logiciel s'​effectuera de la façon suivante : D'​ordre général, la compilation d'un logiciel s'​effectuera de la façon suivante :
- +<code bash> 
-<code bash>cd /​chemin_vers_le_répertoire_des_sources +cd ''​/​chemin_vers_le_répertoire_des_sources''​ 
-test -f configure || sh autogen.sh  +test -f configure || sh autogen.sh ​#facultatif 
-./​configure ​ +./​configure ​--enable-optimizations
 make make
-sudo checkinstall</​code>​+sudo checkinstall ​# ou sudo make install dans ce cas il n'y aura pas de construction de deb 
 +</​code>​
  
 Voyons, en étapes, cette procédure : Voyons, en étapes, cette procédure :
  
   - On se rend dans le répertoire dans lequel se trouve le code source du logiciel ou de la bibliothèque à compiler en utilisant la commande [[tutoriel/​console_commandes_de_base#​cd|cd]].   - On se rend dans le répertoire dans lequel se trouve le code source du logiciel ou de la bibliothèque à compiler en utilisant la commande [[tutoriel/​console_commandes_de_base#​cd|cd]].
-  - On appelle l'​utilitaire « configure » se trouvant dans ce 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,​ il s'​arrête en indiquant ce qui est manquant pour continuer la procédure. Voir juste après comment corriger cela.+  - On appelle l'​utilitaire « configure » se trouvant dans ce répertoire. Celui-ci vérifie que toutes les dépendances du logiciel ou de la bibliothèque à compiler sont bien satisfaites. ​Sicertaines ​ne sont pas satisfaites,​ il s'​arrête en indiquant ce qui est manquant pour continuer la procédure. Voir juste après comment corriger cela.
   - On effectue la compilation en exécutant la commande « make », qui se charge d'​appeler le compilateur. ​ C'est certainement l'​étape la plus longue.   - On effectue la compilation en exécutant la commande « make », qui se charge d'​appeler le compilateur. ​ C'est certainement l'​étape la plus longue.
-  - 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 [[:sudo|les droits du super-utilisateur]]),​ qui surveille son installation et génère, à la fin, un paquet « .deb ».+  - Finalement, le code binaire étant généré, il ne reste qu'à installer le logiciel ou la bibliothèque. ​\\ 
 +On appelle le programme 
 +<code bash> 
 +sudo checkinstall 
 +</​code>​ 
 +(qui nécessite [[:sudo|les droits du super-utilisateur]]),​ qui surveille son installation et génère, à la fin, un paquet « .deb ».
  
-<note important>​Le paquet obtenu lors de l'​utilisation de ''​checkinstall''​ n'est absolument pas destiné à être diffusé. Son rôle est simplement de vous permettre de désinstaller plus proprement le logiciel ultérieurement et par l'​intermédiaire du gestionnaire de paquets.</​note>​+<note important>​Le paquet obtenu lors de l'​utilisation de ''​checkinstall''​ n'est absolument pas destiné à être diffusé. ​ 
 +Son rôle est simplement de vous permettre de désinstaller plus proprement le logiciel ultérieurement et par l'​intermédiaire du gestionnaire de paquets.</​note>​
  
  
Ligne 124: Ligne 134:
 Tout paquet Debian/​Ubuntu qui se respecte liste toutes les dépendances qui lui sont nécessaires tant à l'​exécution comme à la compilation. La manière la plus simple de télécharger les dépendances est d'​utiliser apt-get avec l'​option build-dep, ainsi la commande : Tout paquet Debian/​Ubuntu qui se respecte liste toutes les dépendances qui lui sont nécessaires tant à l'​exécution comme à la compilation. La manière la plus simple de télécharger les dépendances est d'​utiliser apt-get avec l'​option build-dep, ainsi la commande :
  
-   sudo apt-get build-dep epdfview+<code bash> 
 +sudo apt-get build-dep epdfview 
 +</​code>​
  
 Va s'​occuper de télécharger toutes les dépendances nécessaires à la compilation du projet. Bien sûr cette technique ne fonctionne que si le paquet existe déjà . Va s'​occuper de télécharger toutes les dépendances nécessaires à la compilation du projet. Bien sûr cette technique ne fonctionne que si le paquet existe déjà .
Ligne 130: Ligne 142:
 === Les erreurs de « configure » === === Les erreurs de « configure » ===
  
-Si les dépendances ne sont pas installées,​ l'​étape de configuration ​(« ./​configure ​») n'ira pas jusqu'​au bout et vous donnera un message d'​erreur indiquant ce qui manque.+Siles dépendances ne sont pas installées,​ l'​étape de configuration 
 + 
 +<code bash> 
 +./configure 
 +</​code>​ 
 + n'ira pas jusqu'​au bout et vous donnera un message d'​erreur indiquant ce qui manque.
 Prenons l'​exemple de la dépendance manquante « gtk+-2.0 ». Prenons l'​exemple de la dépendance manquante « gtk+-2.0 ».
 On nous indique alors : On nous indique alors :
Ligne 169: Ligne 186:
  
 Chez Ubuntu (comme sur toutes les distributions basées sur Debian), les bibliothèques sont distribuées dans plusieurs paquets (deux au minimum). Prenons l'​exemple de « libfltk ». Elle est installée dans « libfltk1.1 » et dans « libfltk1.1-dev » (« libfltk1.1 » et « libfltk1.1-dev » étant les noms des paquets, installables //via// [[:APT]]). Chez Ubuntu (comme sur toutes les distributions basées sur Debian), les bibliothèques sont distribuées dans plusieurs paquets (deux au minimum). Prenons l'​exemple de « libfltk ». Elle est installée dans « libfltk1.1 » et dans « libfltk1.1-dev » (« libfltk1.1 » et « libfltk1.1-dev » étant les noms des paquets, installables //via// [[:APT]]).
-La bibliothèque « libfltk1.1 » contient les fichiers nécessaires à **l'​exécution** d'un programme se servant de cette bibliothèque ([[http://​packages.ubuntu.com/​cgi-bin/​search_contents.pl?​searchmode=filelist&​word=libfltk1.1&​version=dapper&​arch=i386|voir ce paquet]]), c'​est-à-dire des fichiers « .so.x.y » installés dans « /usr/lib ».  +La bibliothèque « libfltk1.1 » contient les fichiers nécessaires à **l'​exécution** d'un programme se servant de cette bibliothèque ([[https://​packages.ubuntu.com/​cgi-bin/​search_contents.pl?​searchmode=filelist&​word=libfltk1.1&​version=dapper&​arch=i386|voir ce paquet]]), c'​est-à-dire des fichiers « .so.x.y » installés dans « /usr/lib ». 
-La bibliothèque « libfltk1.1-dev » contient les fichiers nécessaires à la **compilation** (les fameux fichiers « .h » que l'on a évoqué tout à l'​heure ([[http://​packages.ubuntu.com/​cgi-bin/​search_contents.pl?​searchmode=filelist&​word=libfltk1.1-dev&​version=dapper&​arch=i38|voir ce paquet]]).+La bibliothèque « libfltk1.1-dev » contient les fichiers nécessaires à la **compilation** (les fameux fichiers « .h » que l'on a évoqué tout à l'​heure ([[https://​packages.ubuntu.com/​cgi-bin/​search_contents.pl?​searchmode=filelist&​word=libfltk1.1-dev&​version=dapper&​arch=i38|voir ce paquet]]).
  
 Pour chaque bibliothèque existante dans Ubuntu, il existe un paquet dont le nom finit par « -dev », qu'il est nécessaire d'​installer pour compiler les logiciels qui dépendent de cette bibliothèque. Pour chaque bibliothèque existante dans Ubuntu, il existe un paquet dont le nom finit par « -dev », qu'il est nécessaire d'​installer pour compiler les logiciels qui dépendent de cette bibliothèque.
Ligne 183: Ligne 200:
 ''​make''​ utilise le Makefile (qui lui est dans votre dossier source). ''​make''​ utilise le Makefile (qui lui est dans votre dossier source).
 « configure » crée le Makefile à partir d'un Makefile.in (que vous avez dans les sources). Tout ça est créé à partir d'un fichier assez simple qu'​écrit le développeur. « configure » crée le Makefile à partir d'un Makefile.in (que vous avez dans les sources). Tout ça est créé à partir d'un fichier assez simple qu'​écrit le développeur.
-Les //​autotools// ​sont un ensemble de scripts qui permettent ​de pouvoir gérer une procédure ​de configuration,​ compilation et installation très complexe ​à partir de quelques fichiers ​(relativementsimples.+Les //​autotools// ​ - ou "​outils de gestion automatisée"​ - forment ​un ensemble de scripts qui permettent ​la gestion des procédures ​de configuration,​ compilation et installation très complexes ​à partir de quelques fichiers ​relativement ​simples.
  
  
Ligne 218: Ligne 235:
   apt-file search libgthread-2.0   apt-file search libgthread-2.0
  
-Il se base sur le « sources.list ». +Il se base sur le « sources.list ».
    The contents packages are fetched from the location(s) specified in /​etc/​apt/​sources.list.    The contents packages are fetched from the location(s) specified in /​etc/​apt/​sources.list.
  
 ==== Les options de configuration ==== ==== Les options de configuration ====
  
-Si vous lancez : +Si
- +
-  ./configure --help +
- +
-Vous verrez tout ce que vous pouvez modifier comme options. Certains programmes ont de nombreuses options de compilation. +
 Par exemple ​ « ''​./​configure --prefix=/​usr''​ » installera les fichiers dans « /usr/ » au lieu de « /usr/local » (utilisé par défaut). ​ Par exemple ​ « ''​./​configure --prefix=/​usr''​ » installera les fichiers dans « /usr/ » au lieu de « /usr/local » (utilisé par défaut). ​
 Lancer « ''​./​configure --help''​ » avant la compilation est toujours une bonne idée. Lancer « ''​./​configure --help''​ » avant la compilation est toujours une bonne idée.
Ligne 237: Ligne 249:
  
   * Une [[tutoriel:​creer_un_paquet#​foire_aux_questions|foire aux questions]] est disponible.   * Une [[tutoriel:​creer_un_paquet#​foire_aux_questions|foire aux questions]] est disponible.
-  * Discussion [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=987|Désinstaller un programme compilé]] sur le forum ubuntu-fr+  * Discussion [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=987|Désinstaller un programme compilé]] sur le forum ubuntu-fr
  
 ---- ----
  • tutoriel/compilation.1368778589.txt.gz
  • Dernière modification: Le 17/05/2013, 10:16
  • par 193.57.110.171