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

Irix => Programmieren, Kompilieren => Thema gestartet von: ulrik_sgi am 19. Dezember 2002, 03:46:59

Titel: GLUT bzw. OpenGL mit gcc
Beitrag von: ulrik_sgi 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!!!
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes 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...
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: ulrik_sgi 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
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: rob_gester 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
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes 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
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: Holger251 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.
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes 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
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: Holger251 am 19. Dezember 2002, 17:06:01
Das wäre ganz schön :-) Ich krebs auch schon die ganze Zeit mit GL rum....
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: ulrik_sgi 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.

Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes 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...
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes 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
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: majix 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.
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes am 17. Januar 2003, 11:31:50
Nimm /usr/include/GL

Unix ist case-sensitive ;)

Viel Spass damit,
Tilmann
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: majix 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?
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes 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
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: majix am 21. Januar 2003, 14:32:56
Vielen Dank! Mein erstes Programm läuft mittlerweile, jetzt kämpfe ich mit X11... Das wird allerdings etwas lästiger, bis ich mich da erst mal durchgearbeitet habe, aber ich komme voran :)

Viele Grüße,
Kaya
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: sgt_barnes am 21. Januar 2003, 16:23:11
Das kannst Du schon? Wenn nicht: es erspart eine Menge Arbeit:

http://techpubs.sgi.com:80/library/tpl/cgi-bin/browse.cgi?coll=0650&db=
bks&cmd=toc&pth=/SGI_Developer/OpenGLonSGI

Lass bei Gelegenheit mal sehen, was Du damit anfängst. Würde mich brennend interessieren, was die anderen Leute im Forum so programmieren.

Und eine Sammlung von mood-indigo.org-OpenGL-Demos wäre doch was, oder?

Tilmann
Titel: Re: GLUT bzw. OpenGL mit gcc
Beitrag von: majix am 21. Januar 2003, 16:48:53
Vielen Dank, das Onlinebuch ist mir bekannt, aber soweit bin ich noch nicht. Ich ärgere mich momentan noch mit XSendEvent herum...

Insgesamt versuche ich einige IMO sehr gute Konzepte von BeOS nach IRIX/Windows zu portieren. Unter Windows funktioniert vieles schon so, wie ich es mir vorstelle, bei IRIX haperts noch (na gut, ich bin auch erst seit anderthalb Wochen am portieren). Aber ich bin zuversichtlich :)

Daran habe ich auch schon mal gedacht, im Forum eine OpenGL Demo zu machen. Falls ich soweit bin (d.h. mein ganzes Grundgerüst steht), werde ich auf jeden Fall mal anfragen. Denn dann wären natürlich noch Grafiker etc gefragt, das könnte ein richtig interessantes Projekt werden, bei dem viele etwas beisteuern können.

Denn eine Demo auf einer SGI - der Gedanke reizt mich scon etwas länger :D Und da ich mein Framework sowohl für Windows als auch für IRIX lauffähig haben will, kann ich dann auch mal gut die Performance zwischen PC und SGI direkt vergleichen.

Wie gesagt, falls ich soweit bin (ich hoffe so in zwei Wochen), werde ich mich definitiv melden!