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 Prochaine révision Les deux révisions suivantes | ||
tutoriel:compilation [Le 10/04/2013, 13:50] 88.172.88.245 [Bibliothèques de développement] |
tutoriel:compilation [Le 06/09/2017, 11:11] 90.29.68.208 [Boir aussi] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Hardy compilation paquet tutoriel}} | + | {{tag> compilation paquet tutoriel}} |
---- | ---- | ||
====== Installer un logiciel ou une bibliothèque par compilation ====== | ====== Installer un logiciel ou une bibliothèque par compilation ====== | ||
- | En informatique, la **compilation** (d'un logiciel ou d'une bibliothèque) est un 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é**: | 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é**: | ||
Ligne 11: | Ligne 11: | ||
- 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é. | - 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é. | ||
- | - 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é. | ||
Ligne 32: | Ligne 31: | ||
Nous vous suggérons aussi d'installer les paquets « fakeroot » et « checkinstall » et nous supposerons que vous les aurez installés. L'outil « checkinstall » surveille la procédure d'installation et crée un paquet « .deb » qui sera présent dans votre liste de paquets installés. Ceci aura pour avantage de vous permettre une désinstallation simplifiée et propre, si vous souhaitez désinstaller ultérieurement vos logiciels et bibliothèques. | Nous vous suggérons aussi d'installer les paquets « fakeroot » et « checkinstall » et nous supposerons que vous les aurez installés. L'outil « checkinstall » surveille la procédure d'installation et crée un paquet « .deb » qui sera présent dans votre liste de paquets installés. Ceci aura pour avantage de vous permettre une désinstallation simplifiée et propre, si vous souhaitez désinstaller ultérieurement vos logiciels et bibliothèques. | ||
- | En résumé, vous devriez [[:tutoriel:comment_installer_un_paquet|installer les paquets]] **[[apt>build-essential|build-essential]]** **[[apt>fakeroot|fakeroot]]** **[[apt>checkinstall|checkinstall]]**. | + | En résumé, vous devriez [[:tutoriel:comment_installer_un_paquet|installer les paquets]] **[[apt>build-essential|build-essential]]** **[[apt>fakeroot|fakeroot]]** **[[apt>checkinstall|checkinstall]]** . |
Ligne 90: | Ligne 89: | ||
- | ===== 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. | ||
Ligne 99: | Ligne 98: | ||
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 | test -f configure || sh autogen.sh | ||
./configure | ./configure | ||
make | make | ||
- | sudo checkinstall</code> | + | sudo checkinstall |
+ | </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. | + | - 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. 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 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 124: | Ligne 131: | ||
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 130: | Ligne 139: | ||
=== 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. | + | Si les 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 183: | Ligne 197: | ||
''make'' utilise le Makefile (qui lui est dans votre dossier source). | ''make'' utilise le Makefile (qui lui est dans votre dossier source). | ||
« configure » crée le Makefile à partir d'un Makefile.in (que vous avez dans les sources). Tout ça est créé à partir d'un fichier assez simple qu'écrit le développeur. | « configure » crée le Makefile à partir d'un Makefile.in (que vous avez dans les sources). Tout ça est créé à partir d'un fichier assez simple qu'écrit le développeur. | ||
- | Les //autotools// sont un ensemble de scripts qui permettent de pouvoir gérer une procédure de configuration, compilation et installation très complexe à partir de quelques fichiers (relativement) simples. | + | Les //autotools// - ou "outils de gestion automatisée" - forment un ensemble de scripts qui permettent la gestion des procédures de configuration, compilation et installation très complexes à partir de quelques fichiers - relativement - simples. |