Bibliothek (shared object) wird zu Ausführungszeit nicht gefunden! (Kompilieren geht)
-
Hallo ...
Ich hoffe mal, dass ich in diesem Forum richtig bin: Ansonsten: Steinigt mich, kreuzigt mich, gebt mir Tiernamen.
Wie im Titel erwähnt, habe ich ein Problem mit einem Shared Objekt ... Ich habe eine Programmbibliothek geschrieben, und versuch jetzt, diese mit einem anderen Programm zu verwenden.
Also sage ich dem Compiler, dass er "einbinden" soll und das, was man halt so tut. Soweit auch kein Problem - zur Kompilationszeit geht alles klar, keine Fehlermeldung vom Linker oder vom Compiler. Includes werden auch gefunden, et cetera ...
Aber jetzt wird das ganze interessant: Möchte ich das Programm nun ausführen, sagt er, die Bibliothek sei nicht vorhanden; er finde sie nicht ... (no such file or directory)
Und genau das wundert mich, das sich die Bibliothek auch im Ausführungsverzeichnis befindet. Und zwar in vier Varianten: libhelium.so, libhelium.so.0, libhelium.so.0.0 und libhelium.so.0.0.0
/home/maximilian/Entwicklung/openBibIGS/src/./../bin/openbibigs: error while loading shared libraries: libhelium.so.0: cannot open shared object file: No such file or directory
Hat jemand eine Idee, was da schief läuft?
Vielen Dank für alle Antworten!
-
Die Bibliotheken müssen in einem der Pfaden von /etc/ld.so.conf sich befinden, typischerweise /usr/lib, /lib, sonst kann man sie nicht laden. Wenn du weder /etc/ld.so.conf ändern kannst, noch ldconfig ausführen kannst und deine libs irgendwo anders liegen, dann musst du die Variable LD_LIBRARY_PATH benutzen (sie bei PATH)
$ export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/Path/zu/deiner/Bibliothek"