Irix > Programmieren, Kompilieren
Frage zum Kompilieren (zB BillardGL)
jobeh:
--- Zitat ---
Da haengt noch was an Fehlermeldungen dran (er bricht bei BillardGL.o ab)
unter den oben gezeigten Zeilen steht noch :
ld32: Error 33: Unresolved text symbol "glutSwapBuffers"-- 1st referenced by BillardGL.o
--- Ende Zitat ---
Die Reihenfolge der Libs ist nicht ok. Der IRIX ld als single pass linker ist da sehr Anspruchsvoll.
Mache ein 'gmake clean' und aendere im Makefile folgendes.
INCPATH = -I/usr/freeware/include -I/usr/include/X11
LINK = g++
LFLAGS =
LIBS = -L/usr/freeware/lib32 -L/usr/lib32 -lglut -lGLU -lX11 -lGL -lXmu -lXext -lX11 -lm -lXi
dann 'gmake' und er sollte durch laufen. Dann mit 'gmake install' das Programm installieren. Hier brauchts dann Rootrechte oder du hast im Makefile und abgeaendert wohin installiert wird.
Gruss
Joerg
sgt_barnes:
Oft liegen solche Sachen an der Reihenfolge, in der die Bibliotheken gelinkt erden.
Probier mal, die -l... (mit kleinem "L") zu verdrehen, besonders die, die irgendwas mit OpenGL zu tun haben.
Z.B. statt "-lGL -lGLU -lglut" schreibe "-lglut -lGLU -lGL". Meistens hilft das.
Ich kann mir auch nie merken, welche Bibliotheken jetzt zuerst kommen müssen, und ich bin immerhin Informatiker (was eigentlich dazu ja nix aussagt, aber ich verdiene mein Geld mit sowas). Ist irgendwie jedesmal wieder "trial-and-error". ;)
MfG,
Tilmann
faxxe:
Bier trinken ist angesagt! Es laeuft! Es waren die Angaben von joerg,die geholfen haben!
Meine abschliessenden Fragen:
1) Wem werden die Optionen in LIBS wie -lglut etc uebergeben? gcc?
2) Wie habt Ihr bzw wie ist es im Allgemeinen moeglich, die Pfade bzw die Reihenfolge der Optionsschalter zu erkennen? Ich finde aus dem Inhalt des makefiles nich wirklich einen Zusammenhang zu den Optionsschaltern
3) Verweist man einfach auf alle Libarys? Was waere, wenn einProgramm mal nicht OpenGL braucht. Kann man die Optionschalter zu GL einfach weg lassen oder werden die durch irgendwas ersetzt?
4) Wer kennt eine Frau fuer mich?
Spass beiseite; das Programm laeuft und macht erst Neugierig auf die Geheimnisse von gcc + g++ und deren Optionen................................
Gruss & tiefe Verneigung
faxxe
;D
sgt_barnes:
zu 1) Die -L... und -l... flags werden von gcc an den Linker weitergegeben. Der weiss dann, welche Bibliotheken er linken muss und wo sie zu finden sind.
zu 2) Mit -L/usr/freeware/lib32 wird dem Linker gesagt, dass er auch in diesem Verzeichnis nach Bibliotheken zu suchen hat. Die können ja im Prinzip überall rumliegen. Mit -lX11 weisst man den Linker an, die Bibliothek "libX11.a" oder "libX11.so" mit in das fertige Programm einzubauen.
Das die Reihenfolge nicht stimmt, sieht man an der Meldung "...not used for resolving any link" und danach "Unresolved text symbol". Verdächtig wird sowas, wenn er erst sagt, dass die Biliothek xy unnötig ist und nachher quengelt, dass er nix aus dieser Bibliothek finden kann.
zu 3) In der Regel lässt der Linker sowieso alles weg, was Du nicht brauchst (deshalb ja das Problem mit der Reihenfolge), aber natürlich kannst Du das -lGL in dem Fall auch weglassen.
zu 4) RTFM! ;-)
MfG,
Tilmann
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln