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.