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 06/09/2017, 11:08]
90.29.68.208 [Compiler]
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é.
   - 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 89: Ligne 93:
  
  
-======= Compiler =====+===== Compiler =====
  
 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>
 cd ''/​chemin_vers_le_répertoire_des_sources''​ cd ''/​chemin_vers_le_répertoire_des_sources''​
-<code bash> +test -f configure || sh autogen.sh ​#facultatif 
-test -f configure || sh autogen.sh  +./​configure ​--enable-optimizations
-./​configure ​ +
 make make
-sudo checkinstall+sudo checkinstall ​# ou sudo make install dans ce cas il n'y aura pas de construction de deb
 </​code>​ </​code>​
  
Ligne 109: Ligne 112:
  
   - 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. \\   - Finalement, le code binaire étant généré, il ne reste qu'à installer le logiciel ou la bibliothèque. \\
-On appelle le programme ​+On appelle le programme
 <code bash> <code bash>
 sudo checkinstall sudo checkinstall
Ligne 139: Ligne 142:
 === Les erreurs de « configure » === === Les erreurs de « configure » ===
  
-Si les dépendances ne sont pas installées,​ l'​étape de configuration ​+Siles dépendances ne sont pas installées,​ l'​étape de configuration
  
 <code bash> <code bash>
Ligne 183: 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 232: 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 251: 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.1504688907.txt.gz
  • Dernière modification: Le 06/09/2017, 11:08
  • par 90.29.68.208