#1 Le 18/07/2007, à 21:47
- Link31
IMPORTANT : comment compiler un programme sous Ubuntu
Lisez la documentation avant de poser une question dans cette section du forum :
Documentation sur la compilation
I. Les paquets nécessaires
Installer en priorité le paquet build-essential.
Les langages de programmation (non-interprétés) les plus populaires sous Linux sont le C et le C++.
Si vous récupérez le code source d'un programme sur internet, il sera très probablement écrit dans l'un de ces langages. Si vous voulez vous initier à le programmation, le C est un bon moyen de débuter.
Dans tous les cas, pour compiler un code en C/C++ et le transformer un programme utilisable, le paquet à installer est : build-essential.
sudo apt-get install build-essential
Ce paquet est un méta-paquet, qui va installer plusieurs autres paquets requis pour compiler sans problèmes.
II. Vérifier le fonctionnement
Voici un code simple en C pour tester si tout fonctionne bien :
- enregistrez ce code sous le nom test.c :
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("Tout fonctionne correctement !\n");
return 0;
}
- ouvrez un terminal, et lancez la commandes suivantes (en supposant que test.c soit dans votre répertoire personnel) :
gcc test.c -o test
- pour exécuter le programme :
./test
III. Les erreurs rencontrées
Il faut éviter d'installer les différents paquets de développement (gcc, binutils, make...) séparément, l'absence de l'un d'entre eux peut conduire à ce type d'erreurs :
test.c: erreur: stdio.h : Aucun fichier ou répertoire de ce type
test.c: In function «main»:
test.c: attention : incompatible implicit declaration of built-in function «printf»
checking for C compiler default output file name... configure: error: C compiler cannot create executables
gcc: commande introuvable (ou "not found")
g++: commande introuvable
cc: commande introuvable
I can't find <xxx.h>.
Si vous rencontrez l'une de ces erreurs, la solution est d'installer le paquet build-essential.
IV. Compiler un code source téléchargé (le plus souvent *.tar.gz ou *.tar.bz2)
Pour compiler un programme récupéré sous forme de code source sur internet, la démarche habituelle est :
./autogen.sh
(ce n'est pas toujours nécessaire, vérifiez si un fichier autogen.sh est présent)
puis :
./configure
make
sudo make install
(le sudo n'est nécessaire que pour l'étape d'installation)
Il existe des variantes selon les programmes, c'est pourquoi il est généralement recommandé de lire le fichier README qui vient avec les sources. Mais vous pouvez très bien essayer la méthode générique avant
Notez que sous Ubuntu, il est recommandé de créer des paquets .deb à l'étape d'installation, en remplaçant sudo make install par sudo checkinstall (plus d'infos dans la documentation)
V. Installer les bibliothèques nécessaires et leurs headers
Pendant l'étape du ./configure, le système de compilation cherche les bibliothèques et les headers nécessaires sur votre système. Lorsque l'un d'eux est introuvable, il affiche un message d'explication.
À partir de là, il faut essayer de deviner quel est le paquet manquant. Une bonne piste est de rechercher les paquets de développement, par exemple si le configure réclame SDL-1.2 ou libSDL-1.2, il faudra installer le paquet libsdl-1.2-dev, ou un nom approchant.
Il peut être utile de chercher quel paquet contient tel fichier grâce au site packages.ubuntu.com.
Dernière modification par Ju. (Le 18/07/2007, à 22:00)
Hors ligne
#2 Le 19/07/2007, à 14:00
- Le Barde
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Link31 : Tout arrive à point à qui sait attendre !
Merci pour cet épinglé et pour ton combat.
Hors ligne
#3 Le 31/07/2007, à 12:26
- eomer212
Re : IMPORTANT : comment compiler un programme sous Ubuntu
hum, à quoi sert le ./ devant le nom du programme??
(je sais, c'est évident, mais linux, ca fait 24h seulement..)
d'autre part, ou est-ce que le compilo range l'executable..??
#4 Le 31/07/2007, à 12:39
- AuraHxC
Re : IMPORTANT : comment compiler un programme sous Ubuntu
./ te permet d'executer un executable => et le compilo le range ou tu lui stipule de le ranger
Donc si tu stipule rien il va te le ranger dans le dossier où tu compile.
Hors ligne
#5 Le 31/07/2007, à 12:59
- reeth
Re : IMPORTANT : comment compiler un programme sous Ubuntu
./ sa ne veux pas dire aussi que le prog à exécuter est dans le répertoire courant? (et que ce n'est pas un alias)? (je pose la question parce que j'en sais rien ^^)
Hors ligne
#6 Le 31/07/2007, à 13:13
- AuraHxC
Re : IMPORTANT : comment compiler un programme sous Ubuntu
oui tu tape ./nom_du_programme si tu es effectivement dans le répertoire de l'executable mais rien ne t'empeche de taper si tu es dans un dossier musique qui est dans ton home et que tu as un executable dans ton dossier programmation de faire ./home/ton_nom/programmation/C/nom_de_ton_executable
ou si tu as un executable sur ton bureau => ./Desktop/nom_de_ton_exec.
Enfin voilà le principe.
Sinon tu peux aussi stipuler dans ton .bashrc des dossier ou tu stock des executables (modifier le PATH) et ainsi ne taper que le nom de l'executable => le même principe que /usr/bin ou sont stocké tes applications.
Dernière modification par AuraHxC (Le 31/07/2007, à 13:14)
Hors ligne
#7 Le 04/08/2007, à 17:32
- cardiomax2000
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Eu question à la con, que signifie le -o dans la commande??? Sinon ça marche niquel merci!!!!
Jeune et con
Hors ligne
#8 Le 04/08/2007, à 17:38
- foustala
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Que signifie le -o dans la commande gcc test.c -o test
o comme output
Hors ligne
#9 Le 17/08/2007, à 23:54
- trucutu
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Si des fonctions C posent problèmes à la compilation, consulter les pages de man peut aider :
sudo apt-get install manpages-dev
puis par exemple :
man 2 mkdir
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#10 Le 19/08/2007, à 21:23
- The_true_power
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Est-il possible de faire la maneuvre inverse ?
ex : j'aimerais modifier un programme, j'aimerais donc le retransformer en script c++ ou ce qu'il était avant.
Hors ligne
#11 Le 20/08/2007, à 11:17
- reeth
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Tu veux dire le décompiler?? Je te conseille de chercher les sources, à mon avis sa sera moins compliqué (bien que je n'ai jamais fait de décompilation ^^)
Hors ligne
#12 Le 20/08/2007, à 11:25
- AuraHxC
Re : IMPORTANT : comment compiler un programme sous Ubuntu
En général tu peux décompiler pour obtenir le code assembleur : désassembler.
Mais avoir le code source du départ, j'en suis pas sûr.
Hors ligne
#13 Le 20/08/2007, à 15:25
- The_true_power
Re : IMPORTANT : comment compiler un programme sous Ubuntu
En fait c'est une application de base... (reboot) cf mon topic.
Hors ligne
#14 Le 20/08/2007, à 15:53
- reeth
Re : IMPORTANT : comment compiler un programme sous Ubuntu
La décompilation (avec des noms de décompilateurs)
Hors ligne
#15 Le 20/08/2007, à 16:19
- sirius10
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Salut
Merci pour le post, au moins ca c est clair!!!
Est il possible de decompiler un noyau??
Par ex :
sudo make uninstall..
"Pour ce qui est de l'Avenir, il ne s’agit pas de le prévoir, mais de le rendre possible."
Antoine de Saint-Exupéry
Hors ligne
#16 Le 21/08/2007, à 12:12
- Link31
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Décompiler ou désinstaller un noyau ?
Le décompiler, c'est quasiment impossible. C'est déjà assez difficile de décompiler un helloworld de 4 ko, alors avec un noyau de plus d'1 Mo...
Enfin je ne vois pas l'intérêt (si on parle bien de Linux), puisque le noyau Linux étant sous GPL, tu as obligatoirement accès au code source de la version binaire que tu utilises.
Pour le désinstaller, si tu as utilisé checkinstall, il suffit de l'enlever depuis Synaptic. Si tu l'as installé "à la main", il faut le supprimer du dossier /boot (ou simplement supprimer son entrée dans le fichier /boot/grub/menu.lst). Puis il peut être utile de réinstaller un noyau "officiel", même si il est déjà présent, pour remettre les choses en place (notamment les modules).
Hors ligne
#17 Le 23/08/2007, à 09:59
- Le Barde
Re : IMPORTANT : comment compiler un programme sous Ubuntu
(Au fait comme titre, tu pourrais mettre "IMPORTANT : Comment compiler un programme C/C++ sous Ubuntu" au lieu de "IMPORTANT : comment compiler un programme sous Ubuntu" : ce post ne s'adresse effectivement pas aux utilisateurs d'autres langages de programmation compilés)
Hors ligne
#18 Le 23/08/2007, à 14:46
- Link31
Re : IMPORTANT : comment compiler un programme sous Ubuntu
La partie IV reste tout de même valable (en théorie) pour n'importe quel langage.
Mais est-ce que cela vaut le coup d'allonger indéfiniment le titre de ce post pour apporter ce genre de précisions, étant donné que 99% des programmes non-interprétés sous Linux sont en C/C++ ?
Hors ligne
#19 Le 06/10/2007, à 17:58
- Link31
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Serait-il possible de remettre ce sujet en épinglé ? Parce que le moins qu'on puisse dire, c'est qu'il n'est pas assez visible, et donc inutile.
La preuve (et je ne donne que les messages les plus récents) :
http://forum.ubuntu-fr.org/viewtopic.php?id=152312
http://forum.ubuntu-fr.org/viewtopic.php?id=152795
http://forum.ubuntu-fr.org/viewtopic.php?id=152783
Merci.
Hors ligne
#20 Le 06/10/2007, à 18:04
- mr_pouit
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Je l'ai épinglé (faut vraiment que les gens apprennent à lire, c'est écrit dans la zone de rappel au dessus du forum ).
Hors ligne
#21 Le 13/10/2007, à 01:30
- nouaf
Re : IMPORTANT : comment compiler un programme sous Ubuntu
salut tout le monde bain je veut que vous m'aidiez a installer des l'ogiciel a ubuntu et comment les faire afficher sur le bureau
Hors ligne
#22 Le 13/10/2007, à 22:57
- atoufix
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Rajouter un chmod +x Makefile dans le auto gen.
atoufix
Hors ligne
#23 Le 31/10/2007, à 17:28
- Remi_tbl
Re : IMPORTANT : comment compiler un programme sous Ubuntu
J'ai bien cherche le FORUM avant de poser cette question...
Mon systeme:
AMD TURION 64 dual core
mon laptop HP
Mon ubuntu 7.04
Mon probleme:
1- pas de crt1.o et autres programmes racines de compilateur gcc nul part sur ma
machine.
2- Je ne peux pas installer build-essential parce que:
sudo apt-get install build-essential
[...]
Les paquets suivants contiennent des dépendances non satisfaites :
build-essential: Dépend: libc6-dev mais ne sera pas installé ou
libc-dev
Dépend: g++ (>= 4:4.1.1) mais ne sera pas installé
E: Paquets défectueux
J'ai une version de libc6 2.1.6-6 qui me bloque completement, peut pas installer libc6-dev, g++
meme pb.
Donc je ne peux pas compiler...
soupir...
Que faire?
Remi
#24 Le 31/10/2007, à 18:00
- Link31
Re : IMPORTANT : comment compiler un programme sous Ubuntu
Est-ce que tu n'aurais pas ajouté des dépôts non fiables à ton sources.list ?
Si tu n'as que les dépôts officiels, alors c'est une erreur des mainteneurs d'Ubuntu, qui devrait être corrigée au plus vite.
Hors ligne
#25 Le 31/10/2007, à 18:13
- mr_pouit
Re : IMPORTANT : comment compiler un programme sous Ubuntu
J'ai une version de libc6 2.1.6-6 qui me bloque completement, peut pas installer libc6-dev, g++
Si c'est une erreur de frappe (2.1.6-6 au lieu de 2.6.1-6), tu as probablement activé les dépôts ubuntu hardy et/ou debian unstable alors que tu es sous feisty.
Hors ligne