Linux: Frage zu LD_LIBRARY_PATH
-
Hi,
Eine Frage zu LD_LIBRARY_PATH. Sind meine folgenden Vermutungen richtig?
1. LD_LIBRARY_PATH ist eine Liste von Pfaden, in denen der Loader bei Start eines Programms nach .so sucht.
2. LD_LIBRARY_PATH hat keinerlei Bedeutung beim linken. Beim Linken sucht der Linker nur in den mit -L angegebenen Ordnern.Stimmt das?
-
Ich spiele mal den Krümelkacker, weil deine Aussagen zwar oberflächlich richtig, aber nicht ganz genau sind:
1. Das mit den .so würde ich so nicht stehen lassen. Dateiendungen sind in Unix nicht so wichtig wie in Windows. Es gibt jedoch eine Konvention dass, sofern man es nicht selber explizit anders macht, Bibliothekennamen nach dem Format libname.so.versionsnummer aufgebaut sind.
LD_LIBRARY_PATH ist dann eine Liste von Verzeichnissen, die vom Linker vor den Standardsuchpfaden durchsucht werden. LD_LIBRARY_PATH ist daher eher zum Debuggen gedacht, um dem Linker eine andere Bibliothek aufzuzwingen als er sonst eingentlich benutzen würde.
2. Der Standardlinker (ld) benutzt den LD_LIBRARY_PATH nach den -L-Pfaden. Aber es wird benutzt. Dies ist oft ein unerwünschter Nebeneffekt, besonders wenn man den LD_LIBRARY_PATH nicht, wie empfohlen, gemäßigt und zum Debuggen benutzt, sondern es intensiv missbraucht.