Linux - SO-Datei nicht gefunden
Ich habe ein Programm, das erfordert liblog4cpp
installiert zu laufen.
Nun, ich möchte das Programm auf einem anderen Rechner ohne liblog4cpp
. Also ich finde die log4cpp.so
und verschieben Sie Sie in das gleiche Verzeichnis meines Programms. Aber bei der Ausführung Fehler gemeldet:
error while loading shared libraries: liblog4cpp.so.4: kann nicht geöffnet werden
shared-object-Datei: Keine solche Datei oder Verzeichnis
Mache ich es richtig? Wie kann ich dem Programm sagen, zu finden, die SO-Datei nur daneben?
- ist die
log4cpp.so
nur ein symbolischer link aufliblog4cpp.so.4
? überprüfen Sie mitfile log4cpp.so
Befehl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie Ihre Umgebungsvariablen LD_LIBRARY_PATH hinzu... Eines der Verzeichnisse auf dem Pfad sollte zeigen Sie auf den Speicherort Ihrer
log4cpp.so
- Datei; auch der linux-Befehlldd
ist nützlich für die Bestimmung, die shared-object-Bibliotheken in die ausführbare Datei. Die syntax istldd <executable>
.Zusätzlich zu dem, was andere vorschlagen, erwägen Sie die Datei der dynamic linker cache. Sie können es so machen:
Hinzufügen, dass es die loader-cache verwenden Sie den folgenden Befehl ein:
ldconfig
Dann um, um zu überprüfen, dass es korrekt Hinzugefügt haben, führen Sie dies:
export LD_LIBRARY_PATH
auf den Pfad der Bibliothek. Diese env-variable funktioniert ähnlich wie die PATH-variable. Es kann enthalten mehrere Pfade getrennt durch :.unter der Annahme, dass der Pfad, in dem die
.so
Datei/en vorhanden ist, ist/path
können Sie auch vermeiden, exportieren Sie eine Umgebungsvariable und verwenden nurbeachten Sie die Tatsache, dass, wenn Sie tun:
Sie zurücksetzen
LD_LIBRARY_PATH
zu einem einzigen Wert/path
und verlieren alles, was Sie Hinzugefügt, bevor Sie diese Umgebungsvariable. Wenn Sie möchten, um einen Wert hinzuzufügen, ohne die vorherigenIn dem rc-Skript, von wo aus Sie starten Ihr Programm, sollten Sie LD_LIBRARAY_PATH, bevor Sie die Anwendung starten. Denken Sie daran, die .so sind die shared libraries, ist es erforderlich, an der Laufzeit zu verknüpfen. Also, es sollte in den standard-Pfad wie /usr/lib vor dem Start.
In Fall ist es nicht kopiert in den standard-Pfad wie /usr/lib geben Sie dann den Pfad mit der folgenden.
Ideal, ich würde platziert haben das .also in den standard-Pfad wie /usr/lib. Wenn es installiert ist, in der standard-Pfad, dann gibt es keine Notwendigkeit, um den oben angegebenen Pfad. Denken Sie daran, um Ihr Programm besser, setzen Sie den neuen Pfad in ldconfig.conf.
Können Sie Debuggen solche Fehler mithilfe der folgenden.
wissen, die so Abhängigkeiten
Für weitere, überprüfen Sie den untenstehenden link.
http://www.tune2wizard.com/sharedobject-crash/
Nach dem hinzufügen von shared objects (oder " shared libraries
lib*.so*
oder solche symbolischen links), um system-Verzeichnisse wie/usr/lib
oder/lib
bekannt, die der dynamische linker ld-linux.so(8) (oderld.so
), die Sie benötigen, um ausführen ldconfig(8)Könnte man auch hinzufügen
/usr/local/lib/
aber dann sicher sein, dass/etc/ld.so.conf
(oder einige Datei/etc/ld.so.conf.d/*.conf
) .erwähnt, dass ein Verzeichnis (und laufenldconfig
nachdem es geändert)