Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tutoriel:compilation [Le 28/06/2016, 12:50] eagle08 [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é. |
- | - 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 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> | ||
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 110: | 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 140: | 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 184: | 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 233: | 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 252: | 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 |
---- | ---- |