#1 Le 16/09/2010, à 15:56
- herzak
Exécution d'un makefile ==== RESOLU
Bonsoir chers(ères) devanciers (ières),
avant de commencer excusez moi parce que ma question est à la limite de la provocation, je vous prie de garder votre calme et de m'aider.
Je compilais la plupart du temps avec un IDE, mais ce matin je tente en vain de faire un makefile après avoir lu les tutos sur le web et même ici sur le forum.
j'écris les règles du makefile avec mon vim. Mais quand je l'exécute on me dit que je n'ai aucun lien.
Mon programme est constitué de:
- fenetre.o
- fenetre.h
- main.c
et j'éxécute mon makefile en tapant dans le terminal
make main.c
Merci de me dire comment je dois m'y prendre pour exécuter mon premier makefile.
Herzak
Dernière modification par herzak (Le 16/09/2010, à 19:10)
Hors ligne
#2 Le 16/09/2010, à 16:07
- helly
Re : Exécution d'un makefile ==== RESOLU
Normalement pour lancer un Makefile il suffit de lancer
make
dans le répertoire kivabien, rien de plus.
Peux tu nous montrer le contenu de ton makefile ?
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#3 Le 16/09/2010, à 16:26
- herzak
Re : Exécution d'un makefile ==== RESOLU
ok
fenetre: fenetre.o main.o
gcc -o hello hello.o main.o
fenetre.o: fenetre.c
gcc -o hello.o -c hello.c -w -Wall -ansi -pedantic
main.o: main.c fenetre.h
gcc -o main.o -c main.c -w -Wall -ansi -pedantic
NB: donc pour ecrire le makefile je dois faire:
vim make
et pour l'exécuter je fais:
make
Le tout dans mon répertoire ou sont mes projets ? Enfin si j'ai bien compris la procédure.
Merci
Dernière modification par herzak (Le 16/09/2010, à 16:31)
Hors ligne
#4 Le 16/09/2010, à 16:32
- helly
Re : Exécution d'un makefile ==== RESOLU
Ok, et que se passe t'il si tu lances simplement
make
dans le repertoire ?
Et quel est le retour de
ls
dans ce même répertoire ?
edit : NON !
Un makefile ne doit pas s'apeller « make » mais « Makefile », lettre pour lettre !
Dernière modification par helly (Le 16/09/2010, à 16:32)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#5 Le 16/09/2010, à 16:40
- herzak
Re : Exécution d'un makefile ==== RESOLU
Quand je fais simplement
make
le message de retour est :
make: **** pas de cibles spécifiées et aucun makefile n'a été trouvé. Arrêt
Quand je fais
makefile
le message de retour est
makefile: command not found
Quand je fais
ls
je vois bien mes fichiers fenetre.o, fenetre.c et main.c
Merci encore pour ton temps que tu me consacres
Hors ligne
#6 Le 16/09/2010, à 16:42
- helly
Re : Exécution d'un makefile ==== RESOLU
Tu as lu mon édit ?
Ton fichier doit s'appeller « Makefile » !
Et doit être dans le même répertoire que fenetre.* main.c !!!
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#7 Le 16/09/2010, à 16:46
- herzak
Re : Exécution d'un makefile ==== RESOLU
ok je reprend donc j'avais pas vu ton edit
j'ai renommé le fichier
et quand je fais un
make
le message de retour est
make:****Pas de règle pour fabriquer la cible <<fenetre.c>>, necessaire pour <<fenetre.o>>.Arrêt
Comment dois-je établir cette règle
Dernière modification par herzak (Le 16/09/2010, à 16:53)
Hors ligne
#8 Le 16/09/2010, à 16:57
- helly
Re : Exécution d'un makefile ==== RESOLU
Essaye ce makefile à la place.
CC= gcc
EXEC= nom_executable
FLAGS= -Wall -ansi -pedantic
all : $(EXEC)
$(EXEC): main.o fenetre.o
$(CC) $^ -o $@
%o: %.c
$(CC) -c $^ -o $@ $(FLAGS)
clean:
rm -rf *.o
Dernière modification par helly (Le 16/09/2010, à 16:59)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#9 Le 16/09/2010, à 17:12
- herzak
Re : Exécution d'un makefile ==== RESOLU
Merci ton code semble marcher
mais on me renvoit une erreur à la ligne 7 de mon makefile et cette ligne contient ce code
>>......$(CC) -c *$^ -o $@
le message est :
Makefile:7: ****séparateur manquant. Arrêt
Merci
Hors ligne
#10 Le 16/09/2010, à 17:14
- helly
Re : Exécution d'un makefile ==== RESOLU
Heuuu oui tu as du recopier ma mauvaise version, il faut remplacer les « >>...... » par des tabulations.
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#11 Le 16/09/2010, à 17:27
- herzak
Re : Exécution d'un makefile ==== RESOLU
Ok grâce à toi j'avance bien.
La compilation fonctionne avec les tabulations.
par contre j'ai ce message d'erreur
make:gccmain.o: commande introuvable
make:*****[herzak]Erreur 127
NB: j'ai nom_executable par herzak
Lequel des fichiers ouvrir pour corriger l'erreur.
Hors ligne
#12 Le 16/09/2010, à 19:09
- herzak
Re : Exécution d'un makefile ==== RESOLU
Merci cher ami pour ton aide je viens de corriger mon fichier Makefile et appeller mon programme et tout fonctionne normalement. je mets la procedure
CC=gcc
CFLAGS= -w -wall -ansi -pedantic
LDFLAGS=
EXEC= fenetre
all: $(EXEC)
fenetre: fenetre.o main.o
$(CC) -o fenetre fenetre.o main.o $(LDFLAGS)
fenetre.o: hello.c
$(CC) -o hello.o -c fenetre.c $(CFLAGS)
main.o: main.c fenetre.h
$(CC) -o main.o -c main.c $(CFLAGS)
j'ai fais:
make
et ensuite la compilation a été un peu bavarde et on m'a remis la main dans le terminal.
puis j'ai fais:
./fenetre
et mon programme c'est ouvert avec stupéfaction.:)
Merci encore pour la piste que tu m'a donné sans toi je serais bien resté avec les IDE.
Mon problème est donc résolu.
Hors ligne
#13 Le 16/09/2010, à 19:15
- helly
Re : Exécution d'un makefile ==== RESOLU
Ouf .
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#14 Le 16/09/2010, à 19:26
- herzak
Re : Exécution d'un makefile ==== RESOLU
Wè je peux pousser un ouf de soulagement.
Merci encore et bonne continuation dans tes projets.
Herzak
Hors ligne
#15 Le 29/05/2014, à 16:45
- adsair
Re : Exécution d'un makefile ==== RESOLU
Bonjour ,
Désolé je déterre le sujet mais j'ai un problème a peut près pareil , je voudrais compiler et exécuter grace a :make dans Vim vous aurez pas une solution ??
Merci
Hors ligne
#16 Le 29/05/2014, à 20:40
- herzak
Re : Exécution d'un makefile ==== RESOLU
Bonjour ,
Désolé je déterre le sujet mais j'ai un problème a peut près pareil , je voudrais compiler et exécuter grace a :make dans Vim vous aurez pas une solution ??Merci
Je ne comprends pas bien votre préoccupation soyez un peu plus explicite et si possible relisez depuis le début de ce post cela peut vous aider.
Hors ligne
#17 Le 02/06/2014, à 18:14
- adsair
Re : Exécution d'un makefile ==== RESOLU
En fait j'essai de codé sous Vim et a chaque fois je doit faire dans la console gcc fichier.o puis ./a.out pour pouvoir executer le code en cour , mais je voudrais savoir si il n'y a pas un autre moyen que de toujours devoir faire ça ?? avec le Makefile ce n'est pas possible ??
Merci
Hors ligne
#18 Le 03/06/2014, à 10:29
- claudius01
Re : Exécution d'un makefile ==== RESOLU
Bonjour,
Avec Vim, il est possible de définir des macros associées aux touche Fx
Exemple avec les 2 commandes très basiques
$ gcc helloworld.c
$ ./a.out
pouvant être lancées sous Vim par la touche F3 définie comme
:map <F3> : ! gcc helloworld.c && ./a.out<CR>
NB: Il est toujours bon d'utiliser un Makefile dans lequel des points d'entrées comme 'all', 'exec', etc. permettent de le piloter...
Cordialement, A+
--
Claudius
Hors ligne
#19 Le 04/06/2014, à 16:29
- adsair
Re : Exécution d'un makefile ==== RESOLU
Tout d'abord merci de votre aide , j'ai essayer de faire la commande proposée par Claudius :
:map <F3> : ! gcc helloworld.c && ./a.out<CR>
Mais bizarrement cela me fait un ToUpper lorsque je fait F3 !!
Alors j'aimerais bien utiliser cette methode pour faire mon :make et lancer ensuite ./main .
Je fait
:map <F3> :make && :./hello <CR>
Mais comme j'ai dit j'obtient un ToUpper en mode normale.
Voila Merci encore de votre aide
Hors ligne