On 12.Feb 2003 - 11:41:14, Frederik wrote: > > also ich mach das so: > > > > gcc -lm ProgrammName.c > das war eigentlich nicht meine Frage. > ich wollte vielmehr wissen, warum "-lm" für math.h steht bzw. wo ich es > hätte herausfinden können, wenn ich es nicht gewußt hätte!? -lm steht aber nicht für math.h, sondern für die libm.so.x.x, -l ist ein Compilerschalter der die angegebene Library miteinbindet (ohne das lib und die Endung). math.h ist eine Header-Datei die die Funktionsrümpfe der in libm.so enthaltenen Funktionen bereitstellt. Du solltest für sowas mal ein wenig nachlesen wie das bei C/C++ mit Libraries funktioniert. Wenn Programm X die Funktionen aus Library Y benutzen will, muss in den Quelldateien von X die Headerdatei(en) von Y mit angegeben werden - damit der Compiler weiß wie die Funktionen aussehen die in X benutzt werden (und in Y definiert sind). Beim sog. Linken braucht dann der Linker nicht mehr nur die Info wie die Funktionen aussehen sondern die Funktionen selbst, deswegen muss man ihm sagen in welche Library sie stehen (-lY z.B.). > Bei solchen Standard-Sachen wie math.h ist es ja noch recht schnell > irgendwo in Bspen zu finden. > > Was ich meine ist, dass es doch irgendetwas geben muss, dass der Linker > einem verrät, was er mit welchen Abkürzungen verlinkt!? Wie oben bereits gesagt, ein Schalte der Form -lXXX wird vom Linker expandiert zu libXXX.so.(Version). Dann kannst du gucken ob diese Datei in den Librarypfaden enthalten ist (i.A. /usr/lib, /lib, evtl. noch /usr/local/lib) bzw. ob er beim Linken -L/pfad/zur/lib hat. Wenn dort nirgendwo eine entsprechende Datei ist, musst du mal schauen zu welchem Paket sie gehört. Zu diesem Paket gibts dann sicher auch ein -dev Paket das die Header enthält. > Oder zu meinem konkreten Problem: > Scheitert ein ./configure bei g++ -lqt-mt; möchte ich natürlich gerne > möglichst schnell und unkompliziert wissen, was ihm genau fehlt. Mach ich immer so: locate qt-mt. Wenn Ergebnis leer -> apt-cache search qt-mt, und -dev Library mit installieren. Wenn Ergebnis von locate nicht leer -> Prüfen der Librarypfade und evtl. ldconfig ausführen. Andreas -- Wie man sein Kind nicht nennen sollte: Al Gebra
Attachment:
pgpNDtcNxFFSz.pgp
Description: PGP signature