| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
| tutoriel:compilation [Le 01/09/2022, 00:10] – Passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) moths-art | tutoriel:compilation [Le 23/11/2025, 10:09] (Version actuelle) – [Bibliothèques de développement] orthographe 31.10.154.44 |
|---|
| <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> | <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. | 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> | <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é. |
| |
| === 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> |
| |
| - 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 |
| === 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> |
| |
| 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 ([[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 » 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 ([[https://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]]). |
| |
| 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 | Si |
| 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. |