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

Autres éditeurs Discussion :

Error Compilation makefile


Sujet :

Autres éditeurs

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Error Compilation makefile
    Bonjour , j'ai bien relu la FAQ sur les makefile mais j'ai pas pu trouvé solution à mon problème .
    Je m'explique : mon projet est des plus basiques.

    J'ai un header.h qui contient la définition des classes et de l'espace.
    J'ai un string.C qui contient l'implémentation des classes.
    J'ai un main.C qui contient le programme principal.


    header.h inclut deux bibliothèques standarts .
    string.C inclut header.h
    main.C inclut string.C

    Voici mon makefile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pgm :  main.o string.o
    	c++ -o pgm main.o string.o
    string.o : string.C header.h
    	c++ -c -g string.C
    main.o : main.C  string.C 
    	c++ -c -g main.C
    Dans les exemples de la FAQ , chaque .o voit jouer en jeu que le meme fichier.C ou un .h mais pas un autre.C .

    Le problème doit se trouver ici :

    main.o : main.C string.C
    c++ -c -g main.C



    merci de votre aide .
    Tu t'ennuies?
    Viens rejoindre un projet ici

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Salut !


    1. Tu fait du C ou du C++ ? fichier.cpp pour le C++, fichier.c pour le C. Pour les header C++ tu as le choix entre l'extension h et hpp
    2. Les extensions sont toujours en minuscules
    3. On ne fournit jamais de header dans les commandes de compilations
    4. En générale, si on se trouve avec plusieurs modules, chaque module possède au minimum un header portant son nom mais avec l'extension *.h. Donc j'aurais déjà changé header.h en string.h


    Pourquoi pas compiler tout en même temps ?

    Moi j'aurais mis tous les fichiers sources dans une variable (dans le Makefile), de même pour leur version "objets" puis tout compiler ensemble comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CC = gcc  # ou g++
    BIN = nom_du_programme
    SRC = main.c gtksdl.c
    OBJ = main.o gtksdl.o
     
    ...
     
    all: $(BIN)
     
    $(BIN): $(SRC)
    	$(CC) $(CFLAGS) -c $(SRC)
    	$(CC) $(LDFLAGS) -o $(BIN) $(OBJ)
    Voilà comment moi je fait un Makefile !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par remid1985
    header.h inclut deux bibliothèques standarts .
    Que veux-tu dire par la exactement ?

    Citation Envoyé par remid1985
    string.C inclut header.h
    main.C inclut string.C
    Un source (.c) ne doit pas etre inclus dans un autre.

    Un source ne doit inclure que des fichier d'entete (.h) qui contiennent les propotype de fonctions, typedef, define, etc. mais pas d'implementations de fonctions.
    Ensuite, chaque fichier source est compile independament. Puis l'edition de lien se charge de regrouper les fichiers objet ainsi obtenu pour creer l'execuable.

    Citation Envoyé par remid1985
    Voici mon makefile

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    pgm :  main.o string.o
    	c++ -o pgm main.o string.o
    string.o : string.C header.h
    	c++ -c -g string.C
    main.o : main.C  string.C 
    	c++ -c -g main.C
    Ton Makefile devrait etre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    pgm :  main.o string.o
    	c++ -o pgm main.o string.o
    string.o : string.C header.h
    	c++ -c -g string.C
    main.o : main.C
    	c++ -c -g main.C
    si main.C utilise des fonctions de string.C, il faut faire un fichier d'entete pour ces fonctions et inclure ce fchier dans main.C (ou eventuellement les rajouter dans un fichier d'entete deja inclus dans main.C).

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/11/2008, 07h41
  2. [compilation] Makefile erreur (linkage?)
    Par Valkirion dans le forum C++
    Réponses: 7
    Dernier message: 03/08/2007, 21h24
  3. Problème de compilation makefile
    Par julien.63 dans le forum C
    Réponses: 2
    Dernier message: 29/05/2007, 08h31
  4. [compilation]Makefile et option de compilation
    Par pada51 dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2007, 12h09

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