Superuser

Autor Thema: GLUT bzw. OpenGL mit gcc  (Gelesen 8517 mal)

ulrik_sgi

  • Gast
GLUT bzw. OpenGL mit gcc
« am: 19. Dezember 2002, 03:46:59 »
Hats schonmal jemand geschafft, mit dem gcc Glut oder OpenGL Code zu kompilieren? Alle Headerfiles sind bei mir einwandfrei installiert, aber wenn ich die testdateien aus dem OpenGL Redbook compilieren will, bekomme ich für jede Glut/OpenGL Funktion ne Fehlermeldung, daß es ein "unresolved text symbol" ist.

Er findet aber die Headerdateien, denn wenn ich die spasseshalber entferne kommen "nachvollziehbare" Fehlermeldungen.

Irgendjemand das schonmal hinbekommen?

Maschine ist eine Octane SI mit frisch installiertem IRIX 6.5.18, gcc 3.irgendwas (der aktuelle aus der freeware-dist), GLUT 3.7 und OpenGL 1.2

Jede Hilfe ist willkommen!!!
« Letzte Änderung: 19. Dezember 2002, 03:47:45 von ulrik_sgi »

mood-indigo.org - Das unabhängige Silicon Graphics User Forum

GLUT bzw. OpenGL mit gcc
« am: 19. Dezember 2002, 03:46:59 »

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #1 am: 19. Dezember 2002, 12:36:37 »
Moin!

Jo, das funktioniert eigentlich wunderbar. Bist Du sicher dass Du die glut auch mit reinlinkst?

Falls ja (und davon gehe ich jetzt auch mal aus) kann es sein dass Du in die verbreitetste Programmierfalle unter IRIX getappt bist:

Wenn Du die glut von der sgi Freeware-Seite hast, ist die Warscheinlichkeit hoch, dass Du mit dem falschen ABI arbeitest. Prinzipiell unterstützt IRIX da nämlich mindestens drei:
o32 (alt, 32 Bit)
n32 (neu, 32 Bit)
n64 (neu, 64 Bit)
Standardmässig generiert der gcc binaries im n32-Stil. Dooferweise kam zumindest meine glut nur als o32. Ein simples " -mabi=32" in die CFLAGS sollte die Probleme beheben.

So, jetzt aber viel Spass mit OpenGL!

Tilmann

P.S.: Huch, was sind meine postings wieder konfus heute! Keine zwei minuten drin und schon geändert...
« Letzte Änderung: 19. Dezember 2002, 12:39:50 von sgt_barnes »

ulrik_sgi

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #2 am: 19. Dezember 2002, 14:07:27 »
daran wirds wohl liegen, ich bin ProjectBuilder bzw. Visual Studio versaut...hab gcc noch nie über die commandline verwendet.

Ich versuche die Datei main.c mit folgendem aufruf zu compilieren

gcc main.c

in main.c include ich glut.h, die er ja auch findet, aber das langt wohl nicht (hab ich mir schon fast gedacht)...

irgendeinen tip für mich???

gruß und danke

ulrik
« Letzte Änderung: 19. Dezember 2002, 14:07:51 von ulrik_sgi »

rob_gester

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #3 am: 19. Dezember 2002, 14:39:27 »
hi
da waren schon hier andere threads unter >freeware und >irix darüber. hauptsächlich geht es um die dependencies: headers, assembler, linker, zusätzliche libraries usw., die sich, ausser freeware.sgi.com, auch auf den development cds von irix befinden und die installiert werden müssen, um überhaupt zu binaries zu kommen.
rob

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #4 am: 19. Dezember 2002, 14:54:26 »
So aus'm Kopf:


gcc main.c -mabi=32 -o main -L/usr/freeware/lib -lGLw -lGL -lGLU -lGLUT -lX11 -lm


Tilmann

Holger251

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #5 am: 19. Dezember 2002, 16:22:30 »
Das krieg ich, wenn ich versuche mit -mabi=32 zu kompilieren :-(

cc1: The -mabi=32 support does not work yet.

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #6 am: 19. Dezember 2002, 16:29:09 »
Ups, sollte mich da meine Erinnerung getrogen haben?

Probier mal -mabi=64 und -L/usr/freeware/lib64 ...

Vielleicht war das auch gerade andersrum...   :-/

Wenn nicht poste ich heute noch ein Makefile, mit dem ich meine GLUT-Sachen übersetze. Komme gerade nur nicht an meine Kiste zuhause ran.

Sorry!

Tilmann

Holger251

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #7 am: 19. Dezember 2002, 17:06:01 »
Das wäre ganz schön :-) Ich krebs auch schon die ganze Zeit mit GL rum....

ulrik_sgi

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #8 am: 19. Dezember 2002, 20:24:45 »
jetzt hab ich folgendes problem:

meine Glut lib is 64 bit, meine OpenGL libs anscheinend nur 32 bit.

Was ist nun der cleverere Weg? Eine 32 bit Glut Lib verwenden oder eine 64 Bit OpenGL lib. Letzeres wäre mir lieber, ich weiß nur net, wo ich die her bekomme...eigentlich hab ich die 64 bit version von der developer library installiert...aber anscheinend nimmt er die net :(

OK, habe den Fehler gefunden. Habe alles nochmal de- und wieder installiert, und hatte wie gesagt das Problem, das im 32 bit mode eine der Libs 64 bit war, und wenn ich's als 64 bit kompilieren wollte, war die glutlib 32 bit, obwohl eigentlich alles sowohl als 64 bit als auch als 32 bit installiert war, bis mir dann einfiel, daß ich die 64 bit Glutlib über die Freeware-Seite, die 32 bit Glutlib jedoch direkt von opengl.org als Tardist installiert habe, sprich ich mußte nur noch die 64 bit glutlib aus /usr/freeware/lib64 nach /usr/lib64 kopieren, und jetzt funtzts :)

Kann man gcc irgendwie eine Art "Bibliothek" angeben, wo er überall nach Libs zu suchen hat? Geht doch bestimmt per config File oder Env-Variable oder so...leider muß ich noch die ganzen Manpages meiner Freeware richtig verlinken, damit er sie findet, und da bin ich jetzt irgendwie nicht in der Stimmung dazu (es gibt ja noch ein morgen :) )

Stimmt es eigentlich, daß es doch irgendwie möglich ist, Open Inventor mit gcc zu kompilieren? Hab da mal im Netz was gelesen, aber nix "handfestes" gefunden.

« Letzte Änderung: 20. Dezember 2002, 03:53:05 von ulrik_sgi »

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #9 am: 20. Dezember 2002, 14:35:56 »
Hier hast Du mal mein Makefile, mit dem ich meine GLUT-Sachen übersetze. Das tut zumindest bei mir, um das Zeug aus diesen sgi-OpenGL-SIGGRAPH-Kursen ("Advanced Graphics Programming Techniques Using OpenGL") und meine alten Computergraphik-Übungen zu übersetze.

Einfach die PROGS-Zeile an die eigenen Bedürfnisse anpassen und fertig. Das Beispiel würde die Dateien prog1.c, prog2.c und prog3.c zu prog1, prog2 bzw. prog3 übersetzen.


CC = gcc
RM = -rm

# debug build
CFLAGS = -g -mabi=64

# release build
# CFLAGS = -O2 -mabi=64

XLIBS = -L/usr/X11R6/lib -lX11 -lXmu -lXext
LFLAGS = -L/usr/freeware/lib64 -lglut -lGL -lGLU $(XLIBS) -lm
INCLUDE = -I/usr/include -I/usr/freeware/include

PROGS = prog1 prog2 prog3

all: $(PROGS)

clean:
     $(RM) $(PROGS)      

.SUFFIXES:
.SUFFIXES: .c

.c:
     $(CC) $(CFLAGS) $(INCLUDE) $< $(LFLAGS) -o $@


Vorsicht: Die Einrückungen MÜSSEN mit TABs passieren, falls das nach dem posten nicht mehr so ist, muss man das entsprechend wiederherstellen!

Tilmann

Ach ja: Die richtige OpenGL-Bibliothek wird meines Wissens nach automatisch ausgewählt, wenn da eine 64-Lib in der Linkerzeile steht. Korrigiert mich, wenn ich mich irre...

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #10 am: 20. Dezember 2002, 14:38:40 »
Uh, ich Schussel:

einen Suchpfad für den Linker gibt man dem gcc (und ich glaube auch praktisch jedem anderen normalen C-Compiler) mit der Option

-L<PFAD>

an. Deshalb immer die "-L/usr/freeware/lib64" und so im Makefile.

Tilmann

majix

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #11 am: 17. Januar 2003, 02:14:19 »
So, ich hab jetzt auch mal eine Frage zu OpenGL: Wo finde ich denn die passenden Header-Dateien? Im Verzeichnis /usr/include/gl gibts zwar eine Datei gl.h, aber die scheint keine OpenGL-Header Datei zu sein, sondern eher sowas wie IRISGL. Zumindest kann ich nichts mit OpenGL kompilieren, denn er meckert, dass ich undefinierte Funktionen verwende (bei so einfachen Sachen wie glBegin und sowas)

Muss ich die OpenGL-Bibliotheken und Header erst installieren? Auf der Development-Foundation CD habe ich zumindest nichts gefunden.

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #12 am: 17. Januar 2003, 11:31:50 »
Nimm /usr/include/GL

Unix ist case-sensitive ;)

Viel Spass damit,
Tilmann

majix

  • Gast
Re: GLUT bzw. OpenGL mit gcc
« Antwort #13 am: 18. Januar 2003, 17:49:45 »
Danke, das wars!

Und gleich meine nächste Frage: Es gibt sowohl libs, die auf .a enden, als auch welche, die auf .so enden. Ich schätze, die einen sind statische Bibliotheken, und die anderen dynamische?
« Letzte Änderung: 18. Januar 2003, 17:50:53 von majix »

Offline sgt_barnes

  • Mood Master
  • ****
  • Beiträge: 250
  • Der frühe Vogel fängt den Wurm, aber die zweite Maus kriegt den Käse!
    • Profil anzeigen
Re: GLUT bzw. OpenGL mit gcc
« Antwort #14 am: 18. Januar 2003, 23:24:18 »
Zitat
Und gleich meine nächste Frage: Es gibt sowohl libs, die auf .a enden, als auch welche, die auf .so enden. Ich schätze, die einen sind statische Bibliotheken, und die anderen dynamische?


Ja, genau.  Existieren von einer Bibliothek beide Versionen, kannst Du den Linker auch zwingen, eine bestimmte zu verwenden: Alle Bibliotheken, die nach einem "-B static" stehen, werden statisch eingebunden. "-B dynamic" macht natürlich genau das Gegenteil.

Wenn Du wie ich normalerweise mit dem Compiler linkst, könnte das zum Beispiel folgendermassen aussehen, wenn Du libz.a, libtiff.so und libjpeg.a linken möchtest:

gcc <ein Haufen object-files> -Wl,-B,static -lz -Wl,-B,dynamic -ltiff -Wl,-B,static -ljpeg -o <dein Executable-Name>

Das war jetzt leider etwas mehr als Du gefragt hast, aber ich denke, das ist in dem Zusammenhang ganz interessant...

Tilmann
« Letzte Änderung: 20. Januar 2003, 11:48:04 von sgt_barnes »