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édentesRévision précédente
Prochaine révision
Révision précédente
tutoriel:compilation [Le 20/01/2018, 16:18] – [Compiler] eagle08tutoriel:compilation [Le 23/11/2025, 10:09] (Version actuelle) – [Bibliothèques de développement] orthographe 31.10.154.44
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.   - 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.
-  - 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 55: Ligne 59:
 === Pour les programmes déjà dans les dépôts, mais que vous voulez compiler pour avoir la dernière mise-à-jour === === Pour les programmes déjà dans les dépôts, mais que vous voulez compiler pour avoir la dernière mise-à-jour ===
  
-Une méthode très intéressante pour trouver les paquets utile à la compilation est la commande **apt-cache showsrc** (Les dépots source "deb-src" doivent être activés !!). Cette commande n'est valide que pour les logiciels déjà présents dans les dépôts (et que vous compilez pour profiter d'une mise-à-jour).+Une méthode très intéressante pour trouver les paquets utiles à la compilation est la commande **apt-cache showsrc** (Les dépots source "deb-src" doivent être activés !!). Cette commande n'est valide que pour les logiciels déjà présents dans les dépôts (et que vous compilez pour profiter d'une mise-à-jour).
  
 <code> <code>
Ligne 108: 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 138: 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 182: 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 231: 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 250: 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
  
 ---- ----