Se connecter / S'enregistrer
Votre question

makefile d'un programme C

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
7 Septembre 2007 20:59:25

salut

alors voici le truc , je veux écrire un programme c avec des modules mais je sais pas comment rédiger le makefile . qq pourra m'aider ??
le programme s'appelle operationfichier.c , il utilise les bib stdio.h et stdlib.h . en plus il utilise le module "structure.h". alors comment écrire le makefile


j'ai un peu commencé :

clean : operationfichier
operationfichier : operationfichier.o structure.o
gcc -Wall operationfichier.o\ structure.o -o structure

avec une explication des détails svp merci

Autres pages sur : makefile programme

a b L Programmation
7 Septembre 2007 22:00:57

Citation :
operationfichier : operationfichier.o structure.o

Tu indiques qu'il faut exécuter les lignes suivant celles-ci pour regénérer "operationfichier" (le programme) lorsque "operationfichier.o" ou "structure.o" ont été modifié
La ligne suivante, pour être cohérent devrait être:
gcc -Wall operationfichier.o structure.o -o operationfichier

le clean, c'est lorsque l'on fait "make clean", c'est pour supprimer tous les fichiers générés. ex:
clean:
rm -f operationfichier operationfichier.o structure.o

7 Septembre 2007 22:01:34

si tu n'a que le .h en plus, tu n'a pas besoin de makefile, un simple:
make operationfichier
suffit.

sinon, pour ton makefile, le clean sert normalement à effacer les fichiers:

clean:
rm operationfichier.o


et enfin, un .h ne sort pas de .o ;) 
Contenus similaires
7 Septembre 2007 22:17:03

merci pour les réponses . je vous donne ci dessous un makefile que j'ai copié .. pourriez vous me dire si ça correspond bien au pb spécifié ci dessus ou pas...

all : operationfichier clean

operationfichier : operationfichier.o stuctures.o
gcc -Wall operationfichier.o structures.o -o operationfichier

operationfichier.o : operationfichier.c structure.h
gcc -Wall -c operationfichier.c

structure.o : structures.c structures.h
gcc -Wall -c structures.h

clean operationfichier
rm -f *-o

ce makefile est il correct ?
pourriez vous commentez chaque ligne ( pourquoi, les différents parties) car je l'ai fait à partir d'une forme générale sans vraiment comprendre le sens.
merci
a b L Programmation
7 Septembre 2007 22:25:57

Citation :

all : operationfichier clean

all c'est la règle pour tout recomplier, si tu fais un clean dedans, ça va pas aller :) 

Sinon le reste est presque bon.
Si tu modifies structure.h, operationfichier.o sera recompilé (puisque c'est dans ses règles), pareil pour structure.o. Et donc, ça recompilera operationfichier

Pour tout le fichier:
Si structures.c ou structures.h sont modifiés, structure.o est recompilé avec la ligne "gcc -Wall -c structures.c" (je te corrige l'autre erreur: tu compiles un .c pas un .h :)  )
Si operationfichier.c ou structure.h sont modifiés, operationfichier.o sera recompilé par la ligne "gcc -Wall -c operationfichier.c"
Si operationfichier.o ou structure.o (il te manque un 'c' et il y a des erreurs avec les 's' à la fin de structures) sont modifiés (c'est-à-dire, ont été recompilés), alors operationfichier sera recompilé avec la ligne "gcc -Wall operationfichier.o structures.o -o operationfichier"

Comme ça s'il n'y a que "operationfichier.c" qui est modifié, structure.o ne sera pas recompilé (car ce n'est pas dans ses règles), alors que le reste le sera.
7 Septembre 2007 22:33:35

merci Ricky pour ta réponse , mais il reste une chose . au fait, j'ai seulement structure.h : un fichier qui contient les définitions des structures utlisées et les prototypes des fonctions de operationfichier.c ... donc , pratiquement structure.c n'existe pas !

dois je le créer et comment? ou dois je juste effacer la ligne
structure.o : ...
a b L Programmation
7 Septembre 2007 22:45:36

Un .h ne se compile pas.
Si tu n'a qu'un seul .c, tu n'auras qu'un seul .o compilé.

  1. all : operationfichier
  2.  
  3. operationfichier : operationfichier.o
  4. gcc -Wall operationfichier.o -o operationfichier
  5.  
  6. operationfichier.o : operationfichier.c structure.h
  7. gcc -Wall -c operationfichier.c
  8.  
  9. clean:
  10. rm -f *.o operationfichier


Si tu as un nouveau fichier (fichier2.c et fichier2.h, le .c utilisant structure.h, et pourquoi pas operationfichier.h), tu aurais:

  1. all : operationfichier
  2.  
  3. operationfichier : operationfichier.o fichier2.o
  4. gcc -Wall operationfichier.o fichier2.o -o operationfichier
  5.  
  6. operationfichier.o : operationfichier.c structure.h
  7. gcc -Wall -c operationfichier.c
  8.  
  9. fichier2.o : fichier2.c fichier2.h structure.h operationfichier.h
  10. gcc -Wall -c fichier2.c
  11.  
  12. clean:
  13. rm -f *.o operationfichier


7 Septembre 2007 22:51:41

merci bien CRicky
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS