Fehlermeldung:"undefined reference to 'glBegin'"



  • Hallo
    Mein erster Versuch unter Linux etwas größeres, als ein kleines Textprogramm zu compilern ging mit folgenden Fehlermeldungen schief:

    flo@linux:~> c++ Beispiel2.c
    /tmp/ccu9Kdvu.o(.text+0x27): In function `main':
    : undefined reference to `glutInit'
    /tmp/ccu9Kdvu.o(.text+0x34): In function `main':
    : undefined reference to `glutInitDisplayMode'
    /tmp/ccu9Kdvu.o(.text+0x49): In function `main':
    : undefined reference to `glutInitWindowSize'
    /tmp/ccu9Kdvu.o(.text+0x58): In function `main':
    : undefined reference to `glutInitWindowPosition'
    /tmp/ccu9Kdvu.o(.text+0x68): In function `main':
    : undefined reference to `glutCreateWindow'
    /tmp/ccu9Kdvu.o(.text+0x88): In function `main':
    : undefined reference to `glClearColor'
    /tmp/ccu9Kdvu.o(.text+0x98): In function `main':
    : undefined reference to `glMatrixMode'
    /tmp/ccu9Kdvu.o(.text+0xa0): In function `main':
    : undefined reference to `glLoadIdentity'
    /tmp/ccu9Kdvu.o(.text+0xed): In function `main':
    : undefined reference to `glOrtho'
    /tmp/ccu9Kdvu.o(.text+0xfd): In function `main':
    : undefined reference to `glutDisplayFunc'
    /tmp/ccu9Kdvu.o(.text+0x105): In function `main':
    : undefined reference to `glutMainLoop'
    /tmp/ccu9Kdvu.o(.text+0x11f): In function `zeichnen()':
    : undefined reference to `glClear'
    /tmp/ccu9Kdvu.o(.text+0x12c): In function `zeichnen()':
    : undefined reference to `glBegin'
    /tmp/ccu9Kdvu.o(.text+0x149): In function `zeichnen()':
    : undefined reference to `glColor3f'
    /tmp/ccu9Kdvu.o(.text+0x15e): In function `zeichnen()':
    : undefined reference to `glVertex2i'
    /tmp/ccu9Kdvu.o(.text+0x166): In function `zeichnen()':
    : undefined reference to `glEnd'
    /tmp/ccu9Kdvu.o(.text+0x16b): In function `zeichnen()':
    : undefined reference to `glFlush'
    collect2: ld returned 1 exit status
    

    Ich bin mir jetzt nicht sicher ob das was mit Linux zu tun hat, da ich mit C++ unter Windows noch gar nicht gearbeitet habe.(Nur mit anderen Programmiersprachen)

    Kann mir hier zufällig einer sagen, was die Fehlermeldungen verursacht und wie ich sie weg bekomm?

    Vielleicht sei noch anzumerken das der Compiler schon früher meckert wenn ich ihm absichtlich eine Funktion präsentiere, die es gar nicht gibt.

    MfG
    Flo



  • Versuch mal:

    man ld
    


  • Wenn du OpenGL funktionen benutzt, dann must du auch die OpenGL Libraries mit linken.



  • Zu deinem Beispiel sollte irgendwo auch stehen, wie man das ganze baut. Vielleicht irgendwas mit -lglut -lgl



  • Danke für die Hilfe. Hab es jetzt hinbekommen in dem nich noch -lglut als Parameter übergeben hab.
    Also:

    c++ -lglut Beispiel2.cpp
    

    Ein anhängen von -lgl war nicht möglich und anscheinend auch nicht nötig.(warum weis ich aber nicht)

    Nehmen wir mal an es hätte nicht geklappt. Für diesen Fall hätte ich dann noch per -L Pfad_zu_Objektdateien den Suchpfad hinzufügen müssen oder?
    MfG
    Flo



  • Oder noch einfacher für häufig benutzte Pfade:

    Trag sie in /etc/ld.so.conf ein.



  • Linux User schrieb:

    Oder noch einfacher für häufig benutzte Pfade:

    Trag sie in /etc/ld.so.conf ein.

    Bist du sicher, dass die beim Linken berücksichtigt werden?



  • Natürlich nicht. 🙂


Anmelden zum Antworten