PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linken eines OpenGl Programms


Scotty
26.09.02, 21:45
Hallo,
beim Linken eines OpenGL Quelltextes macht der Compiler mir Schwierigkeiten.
Das Programm selber läuft einwandfrei unter Win98 ( dort habe ich es mit VC++ kompiliert und gelinkt )

Beim Compilieren gab es wohl keine Fehlermeldungen :

source='main.cpp' object='main.o' libtool=no \
depfile='.deps/main.Po' tmpdepfile='.deps/main.TPo' \
depmode=gcc /bin/sh ../admin/depcomp \
g++ -DHAVE_CONFIG_H -I. -I. -I.. -O2 -fno-exceptions -fno-check-new -c -o main.o `test -f main.cpp || echo './'`main.cpp
*** Erfolg ***

dann aber beim Linken .... :

gmake all-recursive
gmake[1]: Wechsel in das Verzeichnis Verzeichnis »/home/bodo/test«
Making all in test
gmake[2]: Wechsel in das Verzeichnis Verzeichnis »/home/bodo/test/test«
Making all in docs
gmake[3]: Wechsel in das Verzeichnis Verzeichnis »/home/bodo/test/test/docs«
Making all in en
gmake[4]: Wechsel in das Verzeichnis Verzeichnis »/home/bodo/test/test/docs/en«
gmake[4]: Für das Target »all« gibt es nichts zu tun.
gmake[4]: Verlassen des Verzeichnisses Verzeichnis »/home/bodo/test/test/docs/en«
gmake[4]: Wechsel in das Verzeichnis Verzeichnis »/home/bodo/test/test/docs«
gmake[4]: Für das Target »all-am« gibt es nichts zu tun.
gmake[4]: Verlassen des Verzeichnisses Verzeichnis »/home/bodo/test/test/docs«
gmake[3]: Verlassen des Verzeichnisses Verzeichnis »/home/bodo/test/test/docs«
gmake[3]: Wechsel in das Verzeichnis Verzeichnis »/home/bodo/test/test«
/bin/sh ../libtool --mode=link --tag=CXX g++ -O2 -fno-exceptions -fno-check-new -o test main.o
g++ -O2 -fno-exceptions -fno-check-new -o test main.o
main.o: In function `display(void)':
main.o(.text+0xf): undefined reference to `glClear'
main.o(.text+0x14): undefined reference to `glPushMatrix'
main.o(.text+0x2e): undefined reference to `glRotatef'
main.o(.text+0x5a): undefined reference to `glRectf'
main.o(.text+0x5f): undefined reference to `glPopMatrix'
main.o(.text+0x64): undefined reference to `glFlush'
main.o(.text+0x6c): undefined reference to `auxXWindow'
main.o(.text+0x72): undefined reference to `auxXDisplay'
main.o(.text+0x78): undefined reference to `glXSwapBuffers'
main.o: In function `startIdleFunc(_AUX_EVENTREC *)':
main.o(.text+0xdf): undefined reference to `auxIdleFunc'
main.o: In function `stopIdleFunc(_AUX_EVENTREC *)':
main.o(.text+0xfc): undefined reference to `auxIdleFunc'
main.o: In function `myinit(void)':
main.o(.text+0x122): undefined reference to `glClearColor'
main.o(.text+0x139): undefined reference to `glColor3f'
main.o(.text+0x149): undefined reference to `glShadeModel'
main.o: In function `myReshape(int, int)':
main.o(.text+0x175): undefined reference to `glViewport'
main.o(.text+0x182): undefined reference to `glMatrixMode'
main.o(.text+0x18a): undefined reference to `glLoadIdentity'
main.o(.text+0x232): undefined reference to `glOrtho'
main.o(.text+0x242): undefined reference to `glMatrixMode'
main.o(.text+0x247): undefined reference to `glLoadIdentity'
main.o: In function `main':
main.o(.text+0x270): undefined reference to `auxInitDisplayMode'
main.o(.text+0x283): undefined reference to `auxInitPosition'
main.o(.text+0x291): undefined reference to `auxInitWindow'
main.o(.text+0x2a3): undefined reference to `auxReshapeFunc'
main.o(.text+0x2b3): undefined reference to `auxIdleFunc'
main.o(.text+0x2c4): undefined reference to `auxMouseFunc'
main.o(.text+0x2d8): undefined reference to `auxMouseFunc'
main.o(.text+0x2e5): undefined reference to `auxMainLoop'
collect2: ld returned 1 exit status
gmake[3]: Verlassen des Verzeichnisses Verzeichnis »/home/bodo/test/test«
gmake[2]: Verlassen des Verzeichnisses Verzeichnis »/home/bodo/test/test«
gmake[1]: Verlassen des Verzeichnisses Verzeichnis »/home/bodo/test«
gmake[3]: *** [test] Fehler 1
gmake[2]: *** [all-recursive] Fehler 1
gmake[1]: *** [all-recursive] Fehler 1
gmake: *** [all] Fehler 2
*** fehlgeschlagen ***

bekomme ich diese Meldungen, mit denen ich leider nichts anfangen kann, da ich alle notwendigen Bibliotheken eingebunden habe. Dann habe ich mal versucht auf Konsolenebene das Programm zu übersetzten : gcc -Igl -Iglu -Iglx -Iaux main.cpp. Das Resultat war leider das Selbe.
Irgendwie weiss ich leider nicht mehr weiter ............

Bodo

kippndreser
26.09.02, 22:16
100% kenn ich mich net aus, aber vielleicht hilfts ja:

Linkerproblem:
probiers mal in etwa so: gcc -o testprogramm -lGL -lGLU -lX11 testprogramm.c und ggf. auch zusätzlich mit -L/usr/lib und -L/usr/X11R6/lib
kleine L's geben die libXXX oder libxxx an, grosse L's Verzeichnisse in denen nach den libXXX usw. gesucht werden soll.

Wenn der Compiler Headerdateien nicht findet, dann kannst das z.B. mit nem grossen i angeben, z.B. -I/usr/X11R6/include

guck auch mal in die Mesa-Demos rein wie dort die makefiles ausschaun.


äh.. und glaux sollte man nicht mehr verwenden, kann sein dass du diese Library unter nem neuen Linux gar nicht mehr hast.
Für simple Programme oder fürn Anfang: glut, später kannsts ja alles selbst mit glX und X11 machen.
(siehe mesa-glutdemos)

oder: siehe nehe.gamedev.net, dann lessons, da sind einige auch für Linux portiert, glut und glX glaub ich auch.