[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: qt-mt library missing



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


Reply to: