-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Saturday 28 September 2002 23:57, Peter Liscovius wrote:
Als letzten verzweifelten Versuch habe ich folgendes probiert: su cd /lib ln -s /usr/X11/lib/libX11.so libX11.so
Und siehe da, es funktioniert. Kann ja aber nicht die normale Leosung sein, oder? Kann man mir bitte jemand dafuer ne erleuchtende Erklaerung geben?? (wollte die mail grade abschicken und nur noch meinen letzten jaemmerlichen Versuch hinzufuegen als "es passierte" :-)
Ist es auch nicht. "-L/lib -L/usr/lib -I/usr/include -lc" wird automagisch vom gcc angenommen (es sind eigentlich noch ein paar mehr fuer die gcc-lib).
gcc -g -Wall gif2mask.c -o gif2mask -L/usr/X11R6/lib -lungif -lX11 -lm -lz
0. mit -I alle Verzeichnisse angeben, in denen sich noetige Header befinden 1. mit -L alle Verzeichnisse angeben, in denen sich noetige Libs befinden 2. mit -l alle Libs angeben, die Du brauchst 3. die .o, .a -Dateien und -llibs in der Reihenfolge angeben, dass das was von einer anderen lib gebraucht wird immer _hinter_ dieser steht (die .o mit main drin muss also als erstes kommen)
Gruende: 0. Der Compiler nimmt an, dass alles Wichtige in /usr/include liegt, sollte dem nicht so sein muss man es ihm sagen. 1. Es wird nur in den System-Lib-Dirs gesucht. X11 gehoert nicht zum eigentlichen System, sondern ist eine Grafik_erweiterung_. 2. Das normale (Console-) Programm ist mit der libc schon voellig zufrieden. Wenn es Deines nicht ist, muss man das dem Compiler mitteilen. Bei C gibt es keine Moeglichkeit im Quelltext zu sagen, was gebraucht wird (Header werden nicht vom Compiler sondern vom Praeprozessor aufgeloest). 3. Der Linker optimiert noch waehrend er die einzelnen Dateien einliest, alle ueberfluessigen Symbole (=Funktionen und Variablen) werden nicht in das fertige Programm uebernommen (bei shared libs untereinander kann man Glueck haben, da er die ja nicht veraendert).
Konrad
- -- BOFH excuse #2:
solar flares