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

Linux Discussion :

Réfèrence indefinie dans mon makefile


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Par défaut Réfèrence indefinie dans mon makefile
    Salut !

    Je compile mes programmes (en C++) sous Linux grace a la commande toute bête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++ -g -W -Wall -mmmx  -msse3 -m3dnow -pedantic *.cpp */*/*.cpp */*/*/*.cpp -o VMAP_ENGINE -lSDL -lGLU -lSDL_image
    (aucune error ni aucun warning)

    Mais qui est assez "brouillon". Donc, j' essaye de passer au Makefile. Mais voila j' obtiens a chaque fonction appelé dans un fichier objet et defini dans un autre une erreur de linkage... (du moins, je crois)

    Voici mon makefile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    CC = g++
    CFLAGS = -g -W -Wall -mmmx  -msse3 -m3dnow -pedantic
    LDFLAGS = -lSDL -lGLU -lSDL_image
     
    OBJ = main.o DataManager.o Divers.o
     
    VMAP_ENGINE : $(OBJ)
    	$(CC) $^ -o $@ $(LDFLAGS)
     
     #--- MAIN BUILD ---#
    main.o : main.cpp
    	$(CC) main.cpp -c $(CFLAGS)
     #------ END -------#
     
     
     #--- SUB BUILD ---#
    DataManager.o : File.o Texture.o ./VMAP/DataManager/DataManager.h ./VMAP/DataManager/DataManager.cpp
    	$(CC) -c ./VMAP/DataManager/DataManager.cpp File.o Texture.o -o $@
     
    Divers.o : ./VMAP/Divers/VMAP.h ./VMAP/Divers/VMAP.cpp
    	$(CC) -c ./VMAP/Divers/VMAP.cpp -o $@
     #------ END ------#
     
     
     #--- DATAMANAGER BUILD ---#
    Texture.o : ./VMAP/DataManager/Texture/VTEXTURE.h ./VMAP/DataManager/Texture/VTEXTURE.cpp
    	$(CC) -c ./VMAP/DataManager/Texture/VTEXTURE.cpp $(CFLAGS)
     
    File.o : ./VMAP/DataManager/File/VFILE.h ./VMAP/DataManager/File/VFILE.cpp Attribute.o Dio.o
    	$(CC) -c ./VMAP/DataManager/File/VFILE.cpp $(CFLAGS)
     #---------- END ----------#
     
     
     #--- DIVERS BUILD ---#
        #nothing to do for the moment
     #--------- END ------#
     
     #--- SUBFILE BUILD ---#
    Attribute.o : ./VMAP/DataManager/File/ATTRIBUTE.cpp ./VMAP/DataManager/File/COLOR.cpp ./VMAP/DataManager/File/VERTEX.cpp ./VMAP/DataManager/File/ATTRIBUTE.h ./VMAP/DataManager/File/COLOR.h ./VMAP/DataManager/File/VERTEX.h
    	$(CC) -c ./VMAP/DataManager/File/ATTRIBUTE.cpp ./VMAP/DataManager/File/COLOR.cpp ./VMAP/DataManager/File/VERTEX.cpp $(CFLAGS)
     
    Dio.o : ./VMAP/DataManager/File/DIO.cpp ./VMAP/DataManager/File/DIO.h Attribute.o
    	$(CC) -c ./VMAP/DataManager/File/DIO.cpp $(CFLAGS)
     #-------- END --------#
    En fait ce que je veux faire c' est: "compiler" Attribute.o et Dio.o puis les lier dans le fichier objet File.o, puis lier ce fichier (File.o) avec Texture.o, ce qui donne le fichier DataManager.o. Les erreurs de linkage que j' ai provienne de DataManager.cpp qui est utilisé dans la construction de DataManager.o: DataManager.cpp appelle des fonctions contenus dans VFILE.cpp et VTEXTURE.cpp. Ces fonctions ne sont donc pas trouvé par le linker.

    Merci d'avance.

  2. #2
    Membre averti Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Par défaut
    J' ai essayé de revoir mon problème grace a une information que j' ai trouvé sur google: en fait, il suffit de ne pas mettre les *.o dans les dependances de la règle du makefile. Mais un autre problème apparait: puisque j' enlève le *.o dans les dependances de la règle du makefile,make ne compile plus les .o et n' arrive donc plus a les trouver. Donc, je pense que pour regler ca il faudrait pouvoir executer dans une règle d' un makefile une autre règle de ce meme makefile. Qulqu' un saurrait-il comment faire ?

    Merci d' avance.

  3. #3
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Tu as des trucs bizarres.
    Un .o va dépendre d'un .cpp et d'un ensemble de .h qui ensemblent forment l'unité de traduction utilisée pour produire le .o. Suivant ton *nix, makedepend (nom?) aide à l'obtention de ce genre d'informations.

    Après, seul des exécutables, des .a et des .so peuvent dépendre d'un ensemble de .o.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. __declspec(dllexport) dans mon fichier header mais...?
    Par Jasmine dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 03/03/2004, 18h00
  2. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  3. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35
  4. Réponses: 7
    Dernier message: 26/06/2003, 09h11
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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