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

GCC Discussion :

Erreur de compilation


Sujet :

GCC

  1. #1
    Futur Membre du Club
    Erreur de compilation
    Bonjour,

    Je suis étudiant et mon professeur m'a donné un projet à réaliser en programmation 3D. Avec un makefile qui permet de compiler mon fichier .cpp
    J'ai du télécharger une librairie pour manipuler plus facilement des textures et malheureusement je ne sais vraiment pas comment modifier le fichier makefile pour intégrer à la compilation l'utilisation d'un autre fichier.
    Je me suis renseigné sur le net et bien que j'ai compris le fonctionnement d'un makefile, je n'ai aucune idée de comment modifier le makefile de mon professeur que je ne comprends pas. J'arrive donc à demander votre aide car je perds un temps précieux puisque je n'ai pas un mais 4 projets informatiques qui nous ont été donnés en début de mois avec comme délais 30 jours. En somme je suis un poil pressé ^^

    Voici le fameux makefile, je l'ai un tantinet modifié et pimpé mais je ne sais toujours pas comment ajouter le fait de compiler un autre fichier cpp et de compiler les 2 .o :

    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
     
    #Makefile Linux
    EXEC = projet
    COMPILO = g++
    *
    GLUT_INC=
    GLUT_LIBS=-lglut -lGLU
    GL_INC=
    GL_LIBS= -lGL
    *
    #Chemin d'acces des includes
    CXXINCS =* $(GLUT_INC) $(GL_INC)
    *
    #Parametres de compilation
    CXXFLAGS = $(CXXINCS) -Wall
    *
    #Chemin d'acces des librairies
    LIBS = $(GL_LIBS) $(GLUT_LIBS)
    *
    #Chemin d'acces des .h et .cpp (qui pourraient etre ailleurs que dans le répertoire principal)
    PATH_INC=.
    PATH_SRC=.
    *
    #Cree l'executable sous Linux
    all: $(EXEC)
     
    # problème ici, quand je compile comme ceci j'ai un message d'erreur
    $(EXEC): projet.o sdlglutils.o
    	$(COMPILO) -o $@ $^ $(LIBS)
     
    projet.o:* $(PATH_SRC)/projet.cpp
            $(COMPILO) -o $@ -c $< $(CXXFLAGS)
     
    sdlglutils.o:* $(PATH_SRC)/sdlglutils.cpp
    ****$(COMPILO) -o $@ -c $< $(CXXFLAGS)
    *
    #Efface les fichiers .o
    clean:
    ****rm -rf *.o


    voici le message d'erreur :

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o: dans la fonction « _start »:
    /build/glibc-ryFjv0/glibc-2.21/csu/../sysdeps/x86_64/start.S:114: référence indéfinie vers « main »
    sdlglutils.o: dans la fonction « loadTexture(char const*, bool) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x40): référence indéfinie vers « IMG_Load »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xe0): référence indéfinie vers « SDL_ConvertSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x105): référence indéfinie vers « glGenTextures »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x114): référence indéfinie vers « glBindTexture »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x154): référence indéfinie vers « gluBuild2DMipmaps »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x16c): référence indéfinie vers « glTexParameteri »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1b2): référence indéfinie vers « glTexImage2D »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1ca): référence indéfinie vers « glTexParameteri »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1de): référence indéfinie vers « glTexParameteri »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1ea): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x1f6): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x202): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.o: dans la fonction « takeScreenshot(char const*) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x247): référence indéfinie vers « glGetIntegerv »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x28e): référence indéfinie vers « SDL_CreateRGBSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2a2): référence indéfinie vers « SDL_LockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2ce): référence indéfinie vers « glReadPixels »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2de): référence indéfinie vers « SDL_UnlockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x2ff): référence indéfinie vers « SDL_RWFromFile »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x316): référence indéfinie vers « SDL_SaveBMP_RW »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x332): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x33e): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.o: dans la fonction « flipSurface(SDL_Surface*) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x3be): référence indéfinie vers « SDL_CreateRGBSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x3d2): référence indéfinie vers « SDL_LockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x3de): référence indéfinie vers « SDL_LockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x456): référence indéfinie vers « SDL_UnlockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x462): référence indéfinie vers « SDL_UnlockSurface »
    sdlglutils.o: dans la fonction « drawAxis(double) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x47f): référence indéfinie vers « glPushAttrib »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x484): référence indéfinie vers « glPushMatrix »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x48e): référence indéfinie vers « glDisable »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x498): référence indéfinie vers « glDisable »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4a2): référence indéfinie vers « glEnable »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4ac): référence indéfinie vers « glEnable »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4b9): référence indéfinie vers « glLineWidth »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4c8): référence indéfinie vers « glBlendFunc »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4ec): référence indéfinie vers « glScaled »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4f6): référence indéfinie vers « glBegin »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x50a): référence indéfinie vers « glColor3ub »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x51e): référence indéfinie vers « glVertex3i »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x532): référence indéfinie vers « glVertex3i »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x546): référence indéfinie vers « glColor3ub »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x55a): référence indéfinie vers « glVertex3i »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x56e): référence indéfinie vers « glVertex3i »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x582): référence indéfinie vers « glColor3ub »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x596): référence indéfinie vers « glVertex3i »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x5aa): référence indéfinie vers « glVertex3i »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x5af): référence indéfinie vers « glEnd »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x5b4): référence indéfinie vers « glPopMatrix »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x5b9): référence indéfinie vers « glPopAttrib »
    sdlglutils.o: dans la fonction « initFullScreen(unsigned int*, unsigned int*) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x5db): référence indéfinie vers « SDL_ListModes »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x632): référence indéfinie vers « SDL_GetVideoInfo »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x665): référence indéfinie vers « SDL_SetVideoMode »
    sdlglutils.o: dans la fonction « XPMFromImage(char const*, char const*) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x6a8): référence indéfinie vers « IMG_Load »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x70c): référence indéfinie vers « SDL_CreateRGBSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x72e): référence indéfinie vers « SDL_UpperBlit »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x73a): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x8e5): référence indéfinie vers « SDL_LockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x98d): référence indéfinie vers « SDL_GetRGBA »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xa46): référence indéfinie vers « SDL_UnlockSurface »
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xa52): référence indéfinie vers « SDL_FreeSurface »
    sdlglutils.o: dans la fonction « cursorFromXPM(char const**) »:
    sdlglutils.cpp<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0xce5): référence indéfinie vers « SDL_CreateCursor »
    collect2: error: ld returned 1 exit status


    Voici l’aperçu du dossier de mon projet :

  2. #2
    Responsable Systèmes

    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutor...s/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Futur Membre du Club
    J'ai été voir ton lien, ça tente la compilation des 2 .o dans mon makefile ce n'est pas le problème. Le problème c'est lors de la compilation j'ai des erreurs que je ne comprends pas :/

  4. #4
    Expert éminent sénior
    bonjour,
    référence indéfinie (ou undefined reference) est un message au moment de l'édition de lien.
    Il signifie que tu n'as pas donnée tous les morceaux: une bibliothèque de code est absente.
    Cela se résoud avec les options -l (petit L) et -L
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle