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

Irix => Programmieren, Kompilieren => Thema gestartet von: andreslu am 24. Mai 2003, 00:16:43

Titel: gcc -l...
Beitrag von: andreslu am 24. Mai 2003, 00:16:43
hi...

wenn ich bei mir (in diesem beispiel Xrender) gcc -lXrender aufrufe sagt der compiler mit jedesmal fatal 9 i/o error...

ich habe xrender libs und includes natürlich installiert...

meine frage ist nun wo steht geschrieben was der compiler machen soll wenn er so einen -l aufruf bekommt? wo sucht er welche libs und includes?

danke
andre
Titel: Re: gcc -l...
Beitrag von: andreslu am 24. Mai 2003, 01:39:43
ist da ein unterschied zwischen -l und -L? mit großem L gehts nämlich???
Titel: Re: gcc -l...
Beitrag von: Lordy am 24. Mai 2003, 02:03:32
ja, mit den kleinen `l` gibst du einen Lib Path an, mit den grossen `L` eine Lib.

Titel: Re: gcc -l...
Beitrag von: rob_gester am 24. Mai 2003, 02:59:47
'I' bezeichnet den pfad zu den headerdateien, die inkludiert werden müssen, damit die sources kompiliert werden können.
'L' bezeichnet den pfad zu den libraries für den linker.
rob
Titel: Re: gcc -l...
Beitrag von: Galahad am 24. Mai 2003, 03:21:10
Das ist beides nicht ganz richtig. -L bezeichnet Libraryverzeichnisse fürs linken, während -l Libraries angibt. Opengl Dateien kompilieren ich mit folgenden Flags:
-Wall -g -DIRIX -L/usr/freeware/lib32 -lglut -lGL -lGLU -lX11 -lXmu
Titel: Re: gcc -l...
Beitrag von: rob_gester am 24. Mai 2003, 03:40:01
@galahad
das stimmt nicht. libraries sind ausschliesslich fürs LINKEN -> -L.
wenn du z.b. in das verzeichnis /usr/include/GL  (deine option: -IGL) reinschaust, findest nur die header-dateien. die werden mit der option -> -I  für das kompilieren INKLUDIERT.
rob
update: mit libraries meine ich die objekt-libraries, also *.o oder *.so für die dynamischen objekte. es sei denn du meinst die header-dateien auch als libraries ???
Titel: Re: gcc -l...
Beitrag von: Jasper am 24. Mai 2003, 04:47:41
Hi,

scheint wohl etwas Konfusion mit grossem und kleinem "eLL" und "ieeee" zu geben  ;)
Also:
a) -L  = Pfad, wo die Libraries beim Linken gesucht werden sollen (gibt's eigentlich -R unter Irix?)
b) -l (kleines L) = Name der Library, d.h. z.B. libGL.so wird zu -lGL
c) -I (grosses i) = Pfad, wo nach Headerdateien, die mit <...> spezifiziert werden, gesucht wird.

Zum Ursprungsposting: ich nehme an, da ist kleines L gemeint (d.h. linke mit libXrender.so). Wo ist die Datei denn? Musestest dann, wenn nicht in den Standardpfaden, mit -L ergaenzen (vielleicht in /usr/freeware/lib32 schauen).
Titel: Re: gcc -l...
Beitrag von: rob_gester am 24. Mai 2003, 04:57:40
@jasper
da hast recht, die option b) (kleines L) habe ich aus den augen verloren. sorry.
rob
irix gcc hat keine -R  option
Titel: Re: gcc -l...
Beitrag von: Galahad am 24. Mai 2003, 15:51:17
Das kleine L habe ich auch gemeint, das große i mußte ich bis jetzt noch nie benutzen. Sollte er die Header Includes nicht von alleine finden? Meiner Erfahrung nach machen unter Irix auch eher mal die Libs Probleme.
Titel: Re: gcc -l...
Beitrag von: Jasper am 24. Mai 2003, 19:46:51
Das grosse i macht sowieso oft genug Schwierigkeiten mit dem gcc 3 (System Headers und so...). Die Freewarepakete scheinen sich eh alle unter /usr/freeware/include zu schreiben, wo der gcc standardmaessig schon sucht. Bei den Libraries hatte ich den Eindruck, dass der Hauptaerger von den o32, n32 und sonstwas herkommt, so dass ich meistens -L/usr/freeware/lib32 extra setzen muss.

@andreslu: Warum das vermutlich bei Dir mit -L tut: Ich denke, libXrender wird gar nicht gebraucht. Deshalb gibt es bei -L keinen Fehler, weil Du die Library gar nicht zum linken spezifiziert hast, sondern nur den Suchpfad erweitert hast. Lass den Xrender Teil mal ganz weg und schau was passiert.

Gruss

Jasper (der sich schrecklich langweilt, weil der Linux-Mailserver an der Uni wieder streikt und somit nichts tun kann)