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 11/04/2015, 18:34]
105.158.96.21 [Depuis un dépôt CVS ou SVN]
tutoriel:compilation [Le 13/02/2024, 11:06] (Version actuelle)
82.66.54.102 [Récupérer le code source]
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 83: Ligne 86:
  
  
 +==== Depuis un dépôt CVS ou SVN ====
 +
 +La procédure pour récupérer un code source depuis un dépôt CVS ou SVN varie d'une place à une autre. ​ Les instructions pour récupérer le code source sont indiquées, dans la plupart des cas, sur la page des téléchargements du site du logiciel concerné ou dans les pages pour développeurs.
  
  
Ligne 90: 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 121: 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 127: 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 166: 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 215: 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 234: 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.1428770072.txt.gz
  • Dernière modification: Le 11/04/2015, 18:34
  • par 105.158.96.21