Re: Wie die Lib zu undefinierten Symbolen finden?
Philipp Thomas <[email protected]> Wed, 11 Jan 2012 21:11:26 +0100
| Newsgroups | gmane.linux.suse.programming |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 10 Jan 2012 12:51:10 +0100, Thomas Michalka=20 >Warum ist dann die Lib, in der das Symbol definiert ist, nicht unter den >NEEDED-Eintr=C3=A4ge des Programms aufgelistet? Mir fallen zwei m=C3=B6gliche Gr=C3=BCnde ein. Zum einen k=C3=B6nnte es = sich um eine indirekte Abh=C3=A4ngigkeit handeln, sprich eine der in NEEDED verzeichneten Bibliotheken ben=C3=B6tigt das Symbol (unwahrscheinlich in diesem Fall) oder aber die Bibliothek wird explizit mittels dlopen geladen und dann die ben=C3=B6tigten Symbole mittels dlsym eingebunden. Sicheren Aufschluss k=C3=B6nnen nur die Quellen des Pakets liefern. >Richtig. Hier habe ich aber auch keinen Hinweis auf die >libborqt-6.9-qt2.3.so; wieso nicht, wenn das undefinierte Symbol darin >definiert ist? Im Binary werden die Informationen unabh=C3=A4ngig von einander gespeichert. Da ist zum einen der Name der Bibliothek gegen die das Programm gelinkt wird und zum anderen das ben=C3=B6tigte Symbol. Es wird beim Linken nicht festgehalten, aus welcher Bibliothek welches Symbol benutzt wurde. >=C3=BCbrigens ist das neben einem Symlink die einzige Datei in dem = RPM-Paket >gewesen, das ich installiert habe. Ich h=C3=A4tte sie wohl auch aus = einem >*.tar.gz holen und manuell nach /usr/lib kopieren k=C3=B6nnen. Ich = wollte >u.a. sehen, ob initPAnsiStrings darin enthalten ist. Wenn die Bibliothek nicht f=C3=BCr die Distribution gebaut wurde sollte = man das nicht probieren sondern die Bibliothek f=C3=BCr die eigene = Distribution kompilieren. Deshalb gib doch bitte an, um welches Programm es sich handelt und eine URL zum Quellcode des Programms. Dann kann ich mir den Code selber mal ansehen und evtl. entdecken, was da schief geht. Die URL zu dem Quellpaket von libborqt-6.9-qt2.3.so w=C3=A4re auch nicht schlecht. Philipp >Zus=C3=A4tzlich frage ich, ob es gen=C3=BCgt, die Lib an die richtige = Stelle zu >kopieren, damit der Dynamic Linker/Loader (/lib/ld-linux.so.2) diese Lib >beim Programmstart laden kann. Kannst Du dazu was sagen? Wo der dynamische Linker ld-linux.so die Bibliotheken sucht ist in /etc/ld.so.conf festgehalten. Wenn die Bibliothek in einem der angegebenen Veryeichnisse liegt wird sie bei Bedarf geladen. Philipp -- To unsubscribe, e-mail: [email protected] To contact the owner, e-mail: [email protected]