Wenn sich Ihre Bibliotheken nicht im Standardpfad befinden, müssen Sie sie entweder zum Pfad hinzufügen oder einen nicht standardmäßigen Pfad zu LD_LIBRARY_PATH
hinzufügenexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<Your_non-Standard_path>
Sobald Sie eines der oben genannten Dinge getan haben, müssen Sie die Laufzeitbindung des dynamischen Linkers aktualisieren, indem Sie den folgenden Befehl ausführen:
sudo ldconfig
AKTUALISIERUNG:
Sie können die Änderungen dauerhaft machen, indem Sie entweder den obigen export
schreiben Zeile in eine Ihrer Startdateien (z. B. ~/.bashrc) ODER Wenn die zugrunde liegende Bibliothek nicht mit einer anderen Bibliothek in Konflikt steht, dann in einen der Standardbibliothekspfade einfügen (z. B. /lib,/usr/lib)
LD_LIBRARY_PATH
eignet sich für kurze Tests, da es aber nur eine Variable gibt , ist es umständlich zu verwenden, wenn Sie möglicherweise mehrere Anwendungen mit benutzerdefinierten Bibliotheken haben.
Der übliche Weg für Debian/Ubuntu besteht darin, es zur Konfiguration des Loaders hinzuzufügen, z. B. eine Datei unter
/etc/ld.so.conf.d
mit dem Verzeichnis, in dem der Loader suchen soll, z. B.
/usr/local/libcsfml
Weiterführende Literatur:
- ldconfig - Laufzeitbindungen für dynamische Linker konfigurieren
- ld.so, ld-linux.so* - dynamischer Linker/Lader
- Warum LD_LIBRARY_PATH schlecht ist
Dies sieht so aus, als ob die fragliche Binärdatei von Ihnen kompiliert wurde.
Sie sind also für das Problem verantwortlich, dass einige Bibliotheken nicht gefunden werden können.
Falls diese Bibliotheken auf Ihrem System verfügbar sind, scheinen sie sich in nicht standardmäßigen Verzeichnissen zu befinden.
Verwenden Sie -R directory
für den abschließenden Compiler-Aufruf, um dem Linker den directory
mitzuteilen wo sich die Bibliotheken befinden. Mehr als ein einzelnes -R directory
Option ist möglich.
Beachten Sie das, wenn Sie gcc
verwenden , müssen Sie möglicherweise -Wl,-R
verwenden statt -R
.