Autor Thema: gcc -l...  (Gelesen 6180 mal)

andreslu

  • Gast
gcc -l...
« 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

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

gcc -l...
« am: 24. Mai 2003, 00:16:43 »

andreslu

  • Gast
Re: gcc -l...
« Antwort #1 am: 24. Mai 2003, 01:39:43 »
ist da ein unterschied zwischen -l und -L? mit großem L gehts nämlich???

Lordy

  • Gast
Re: gcc -l...
« Antwort #2 am: 24. Mai 2003, 02:03:32 »
ja, mit den kleinen `l` gibst du einen Lib Path an, mit den grossen `L` eine Lib.


rob_gester

  • Gast
Re: gcc -l...
« Antwort #3 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

Galahad

  • Gast
Re: gcc -l...
« Antwort #4 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

rob_gester

  • Gast
Re: gcc -l...
« Antwort #5 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 ???
« Letzte Änderung: 24. Mai 2003, 04:36:26 von rob_gester »

Jasper

  • Gast
Re: gcc -l...
« Antwort #6 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).
« Letzte Änderung: 24. Mai 2003, 04:49:05 von Jasper »

rob_gester

  • Gast
Re: gcc -l...
« Antwort #7 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
« Letzte Änderung: 24. Mai 2003, 05:10:25 von rob_gester »

Galahad

  • Gast
Re: gcc -l...
« Antwort #8 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.

Jasper

  • Gast
Re: gcc -l...
« Antwort #9 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)