Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/09/2010, à 16: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 cool

Dernière modification par herzak (Le 16/09/2010, à 20:10)

Hors ligne

#2 Le 16/09/2010, à 17: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, à 17: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, à 17:31)

Hors ligne

#4 Le 16/09/2010, à 17: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, à 17: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, à 17: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, à 17: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, à 17: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, à 17:53)

Hors ligne

#8 Le 16/09/2010, à 17: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, à 17: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, à 18: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, à 18: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, à 18: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, à 20: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. cool

Hors ligne

#13 Le 16/09/2010, à 20:15

helly

Re : Exécution d'un makefile ==== RESOLU

Ouf smile.


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, à 20: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, à 17: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, à 21:40

herzak

Re : Exécution d'un makefile ==== RESOLU

adsair a écrit :

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, à 19: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, à 11: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, à 17: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