OpenGL unter Linux

Hallo!

Ich bin ziemlicher Linux-Newbie und hab das Problem, dass ich meine c+±Dateien mit OpenGL-Code unter SuSe 8.0 nich zum Laufen kriege. Brauch das für die Uni, deshalb sind die Quellcode-Dateien alle vorgegeben und sollten soweit in Ordnung sein. Alles was irgendwie mit OpenGL zu tun hatte, hab ich von der Suse-CD installiert.

Bisher habe ich dann folgende Schritte durchgeführt:

  1. Zunächst musste ich mir tmake nachträglich installieren, das hat aber wohl geklappt.

  2. Dann habe ich mir glut installiert.

  3. Von unserm Prof gabs die Quell-Dateien als Packet basis2d.tgz unter http://viswiz.imk.fraunhofer.de/%7Ebohn/unisiegen/cg…. Diese hab ich mit dem Befehl „tar -xzf“ entpackt.

  4. Anschließend bin ich in den, durch das Entpacken, entstandenen Ordner basis2d gegangen und habe dort tmake ausgeführt, um mir ein Makefile zu erzeugen, bzw. um das vorhandene Makefile zu übnerschreiben.

  5. Das hat alles soweit ohen Fehlermeldung funktioniert. Wenn ich jetzt aber einfach „make“ eingebe und Enter drücke, so erhalte ich folgende Fehlermeldung:

g++ -c -pipe -I -I/users/bohn/inc .I/usr/X11R6/include -o gfx2.o gfx2.cpp
make: g++: Kommando nicht gefunden
make: *** [gfx2.o]Fehler 127

Was ist da faul?
Hinweis:
Als ich tmake nachträglich installiert habe, musste ich einen TMAKEPATH setzen und zwar auf den Ordner linux-g++. Habe daraufhin mit „locate“ nach linux-g++ gesucht und den TMAKEPATH auf den gefundenen Ordner gesetzt, der bei mir /usr/lib/tmake/linux-g++ heißt. Hab auch keine Fehlermeldung erhalten, aber könnte dieser Pfad vielleicht faul sein, weil die Fehlermeldung ja besagt, dass g++ nicht gefunden wurde?

Ich hatte auch erst vermutet, dass ich irgendwie die Verzeichnisse -I/users/bohn/inc und .I/usr/X11R6/include aus der Fehlermeldung ändern müsste, weil das ja Verzeichnisse vom Rechner des Profs sind, die auf meinem gar nicht existieren. Aber bei einem Kollegen funktioniert alles, ohne diese Verzeichnisse verändert zu haben.

Also, hat jemand vielleicht ne Idee? Wie gesagt, bin ziemlicher Linux-Neuling und daher für jeden Tipp dankbar!
Gruß,
Victor

make: g++: Kommando nicht gefunden

Warum installierst Du nicht g++?

Warum installierst Du nicht g++?

Gesagt, getan. Hab ich also jetz gemacht. Aber jetzt erhalte ich bei Aufruf von make diese Fehlermeldung (egal ob ich’s als Victor oder als root durchführe):

g++ -c -pipe -I. -I/users/bohn/inc -I/usr/X11R6/include -o gfx2.o gfx2.cpp
In file included from gfx2.h:7,
from gfx2.cpp:1:
/usr/include/GL/glut.h:10: GL/gl.h: Datei oder Verzeichnis nicht gefunden
/usr/include/GL/glut.h:11: GL/glu.h: Datei oder Verzeichnis nicht gefunden
Assembler messages:
FATAL: can’t create gfx2.o: Keine Berechtigung
In file included from gfx2.h:7,
from gfx2.cpp:1:
/usr/include/GL/glut.h:584: GLenum' was not declared in this scope /usr/include/GL/glut.h:584: parse error before )’
/usr/include/GL/glut.h:649: type specifier omitted for parameter
/usr/include/GL/glut.h:649: parse error before ,' /usr/include/GL/glut.h:650: syntax error before (’
/usr/include/GL/glut.h:654: GLenum' was not declared in this scope /usr/include/GL/glut.h:654: parse error before )’
/usr/include/GL/glut.h:655: GLenum' was not declared in this scope /usr/include/GL/glut.h:655: parse error before )’
/usr/include/GL/glut.h:662: GLenum' was not declared in this scope /usr/include/GL/glut.h:662: parse error before )’
/usr/include/GL/glut.h:676: GLdouble' was not declared in this scope /usr/include/GL/glut.h:676: parse error before ,’
/usr/include/GL/glut.h:677: GLdouble' was not declared in this scope /usr/include/GL/glut.h:677: parse error before ,’
/usr/include/GL/glut.h:678: GLdouble' was not declared in this scope /usr/include/GL/glut.h:678: parse error before ,’
/usr/include/GL/glut.h:679: GLdouble' was not declared in this scope /usr/include/GL/glut.h:679: parse error before ,’
/usr/include/GL/glut.h:680: GLdouble' was not declared in this scope /usr/include/GL/glut.h:680: parse error before )’
/usr/include/GL/glut.h:681: GLdouble' was not declared in this scope /usr/include/GL/glut.h:681: parse error before )’
/usr/include/GL/glut.h:682: GLdouble' was not declared in this scope /usr/include/GL/glut.h:682: parse error before ,’
/usr/include/GL/glut.h:683: GLdouble' was not declared in this scope /usr/include/GL/glut.h:683: parse error before ,’
/usr/include/GL/glut.h:686: GLdouble' was not declared in this scope /usr/include/GL/glut.h:686: parse error before )’
/usr/include/GL/glut.h:687: GLdouble' was not declared in this scope /usr/include/GL/glut.h:687: parse error before )’
/usr/include/GL/glut.h:697: GLenum' was not declared in this scope /usr/include/GL/glut.h:697: parse error before )’
/usr/include/GL/glut.h:737: GLenum' was not declared in this scope /usr/include/GL/glut.h:737: parse error before )’
In file included from gfx2.h:8,
from gfx2.cpp:1:
gx2.h:21: `GLsizei’ was not declared in this scope
gx2.h:21: parse Error before ‚,‘
gfx2.cpp:10:output pipe has been closed
make: *** [gfx2.0] Fehler 1

Weiß jemand Rat?
Gruß,
Victor

Warum installierst Du nicht g++?

Gesagt, getan. Hab ich also jetz gemacht. Aber jetzt erhalte
ich bei Aufruf von make diese Fehlermeldung (egal ob ich’s als
Victor oder als root durchführe):

g++ -c -pipe -I. -I/users/bohn/inc -I/usr/X11R6/include -o
gfx2.o gfx2.cpp
In file included from gfx2.h:7,
from gfx2.cpp:1:
/usr/include/GL/glut.h:10: GL/gl.h: Datei oder Verzeichnis
nicht gefunden

Sind die nicht da? Wo sind sie denn ? Vermutlich hast Du eine nicht ausreichende Installation und brauchst glut-devel oder wie auch immer die Entwicklerpakete gerade heißen möhen (ich habe gerade keine Lust nachzusehen…)

Sebastian

Sind die nicht da? Wo sind sie denn ? Vermutlich hast Du eine
nicht ausreichende Installation und brauchst glut-devel oder
wie auch immer die Entwicklerpakete gerade heißen möhen (ich
habe gerade keine Lust nachzusehen…)

ich glaube mesa-devel und mesaglut-devel oder so :smile:

gruss
mip

Erstmal Danke Leute. Ihr habt mir jetzt schon zweimal geholfen, zwei Fehler auszumerzen, aber leider funzt die Sache immer noch nicht.
Wenn ich jetzt make eingebe, erscheint folgende Fehlermeldung:

g++ -o cgi gfx2.o gx2.o main.o mygfx.o -L/usr/X11R6/lib -L/users/bohn/libs -L/usr/lib -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm
/usr/i486-suse-linux/bin/ld: cannot find -lXmu
collect2: ld returned 1 exit status
make: *** [cgi] Error 1

Daraufhin erzeugt er alle *.o Dateien, aber keine cgi. Der Fehler liegt wohl daran, dass er diese Bibliotheken lXmu, lXtext usw. nicht findet, die dieser GNU-Linker ld benötigt. Wahrscheinlich, weil sie gar nicht da sind. Aber auf meinen Linux-CD’s (ich hab Suse 8.0) kann ich keine solche Bibliotheken finden und im Netz war die Suche auch erfolglos. Wo krieg ich die also her oder sind die doch schon vorhanden nur ich weiß nicht wo oder liegt der Fehler vielleicht doch ganz woanders.
Ich spüre, dass ich ganz dicht dran bin, weil der GNU-Linker zuletzt im Compilier-Prozeß ausgeführt wird. Wenn ich den Fehler behebe, müsste es doch endlich klappen.

Hat jemand ne Idee?
Gruß,
Victor

FEHLERMELDUNG !!!

Bitte nicht herumschreien, das ist aufdringlich und verärgert die, die Dir helfen sollen.

g++ -o cgi gfx2.o gx2.o main.o mygfx.o -L/usr/X11R6/lib
-L/users/bohn/libs -L/usr/lib -lglut -lGLU -lGL -lXmu -lXext
-lX11 -lm
/usr/i486-suse-linux/bin/ld: cannot find -lXmu

Hat jemand ne Idee?

$ man -k xmu
XmUpdateDisplay (3x) - A function that processes all pending exposure
events immediately "XmUpdateDisplay"
XmUninstallImage (3x) - A pixmap caching function that removes an
image from the image cache "XmUninstallImage" "pixmaps"

und für den nächsten möglichen Störenfried:

$ man -k xext
XExtentsOfFontSet (3x) - obtain the maximum extents structure for a
font set
XExtendedMaxRequestSize (3x) - Display macros and functions

Es fehlen Dir immer noch Sourcen, die Du anhand obiger Ausgaben lokalisieren können solltest. Vielleicht in den Paketen mesaglut-devel oder mesa-devel enthalten oder ganz woanders?
Die Suche danach sollte nun aber leichter sein, ich kenne die
mesaglut/OpenGL Pakete nicht wirklich :wink:

-:-
Axel

Es fehlen Dir immer noch Sourcen, die Du anhand obiger
Ausgaben lokalisieren können solltest. Vielleicht in den
Paketen mesaglut-devel oder mesa-devel enthalten oder ganz
woanders?
Die Suche danach sollte nun aber leichter sein, ich kenne die
mesaglut/OpenGL Pakete nicht wirklich :wink:

sollten die X* Sachen nicht beim X-Server dabei sein und nicht bei glut etc ?? Also normal
sollten die da sein, vielleicht mal die Pfade zu X checken.

gruss
mip

Es fehlen Dir immer noch Sourcen, die Du anhand obiger
Ausgaben lokalisieren können solltest. Vielleicht in den
Paketen mesaglut-devel oder mesa-devel enthalten oder ganz
woanders?
Die Suche danach sollte nun aber leichter sein, ich kenne die
mesaglut/OpenGL Pakete nicht wirklich :wink:

sollten die X* Sachen nicht beim X-Server dabei sein und nicht
bei glut etc ??

Die sind in der Regel in x-devel oder so.

Immerhin hatte YaST (ing doch um SuSE, oder?) zumindet früher eine Suchfunktion um zu sehen, welche Dateien in welchem Paket zu erwarten sien. Die entsprechenden Dateien kann man auch ganz brauchbar „roh“ von CD lesen.

Sebastian