IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

makefile d'un prog C


Sujet :

Systèmes de compilation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 11
    Points
    11
    Par défaut makefile d'un prog C
    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

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Déjà une mise au point des termes.
    La source de ton programme est operationfichier.c.
    stdio.h et stdlib.h, ce ne sont pas des bib, des bibliothèques, des librairies ou tout ce que tu pourrais imaginer mais des entêtes.

    D'où vient structure.h ? Tu écris à un moment structure.o, ça veut dire qu'il y a un fichier structure.c à compiler aussi ?

    Ensuite une règle de compilation contient une cible, une ou des commandes pour la générer et éventuellement des dépendances, les fichiers qui sont nécessaires pour générer la cible.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cible : dépendances
            commande
    Dans ton exemple (s'il n'y a pas de structure.c), les cibles sont operationfichier.o et operationfichier.
    Les dépendances de operationfichier.o sont structure.h et operationfichier.c.
    operationfichier a pour dépendance operationfichier.o.
    Et les commandes, de manière simple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gcc -Wall -c [-o fichier.o] fichier.c # compilation
    gcc -o executable <liste des .o>    # link
    A toi de tout remettre dans l'ordre...


    Dans tes règles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clean : operationfichier
    Il manque la commande et tu peux supprimer la dépendance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    operationfichier : operationfichier.o structure.o
    gcc -Wall operationfichier.o\ structure.o -o structure
    Dans la commande, il n'y a pas la cible. La cible serait alors structure. Pour quoi un \ dans la commande ?

    Ce genre de questions se pose dans le forum suivant
    http://www.developpez.net/forums/forumdisplay.php?f=65

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 11
    Points
    11
    Par défaut en complément
    au fait , structures.h est le fichier qui contient la description des structures utilsées dans le programme ainsi que les prototypes des fonctions .

    ce makefile est il correct ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    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
    ou dois-je supprimer la ligne structure.o : ..... ?
    merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    N'oublie pas les balises code.

    Je ne comprends pas ta règle all. Tu veux générer operationfichier et faire clean aussitôt. J'en vois pas trop l'intérêt. Le plus souvent, on fait make all pour générer l'exécutable. Ensuite, on fait make clean pour faire le ménage. Un des buts d'un Makefile, c'est de pouvoir regénérer que ce qui est nécessaire. Si tu nettoies tout après avoir généré operationfichier, il faudra recommencer toute la compilation.

    La règle operationfichier est fausse car tu n'as pas de fichier structure.c. Pas de .c pas de .o. Donc pas de dépendance structure.o.

    Règle operationfichier.o OK

    La règle structure.o ne sert à rien. Tu dis toi même que tu n'as pas de fichier structure.c. Pourquoi tu en fais mention ? Et on ne compile pas un entête.

    Règle clean.
    Il manque :.
    Je ne mettrais pas operationfichier en tant que dépendance. Quand tu appeleras clean, la première chose qu'il fera sera de voir si operationfichier est bien à jour et si nécessaire le regénera. Ce n'est pas vraiment ce qu'on veut faire avec un clean.
    On supprime des *.o pas des *-o.

    De manière générale, la commande est précédée d'une tabulation mais comme tu n'utilises pas les balises CODE, on ne peut pas savoir.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Merci bien aoyou .... tes remarques m'ont vraiment aidé , merci

Discussions similaires

  1. makefile prog opengl
    Par michael84 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/05/2007, 13h08
  2. Réponses: 8
    Dernier message: 17/10/2002, 12h52
  3. redémarrer un prog à partir d'un bouton
    Par yokito dans le forum Langage
    Réponses: 5
    Dernier message: 06/09/2002, 13h19
  4. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo