"error while loading shared libraries"



  • Hallo!

    Ich versuche ein Programm zu portieren (Windows->Linux (SuSe 9.2)), welches weitere Bibliotheken benötigt, darunter z.B. OpenCV.
    Diese habe ich gemäß Anleitung installiert, so liegt z.B. die Datei:

    /usr/local/lib/libcv.so.0

    vor.

    Das eigentliche Programm lässt sich problemlos compilieren und linken, beim starten gibt es dann aber folgende Meldung:

    programm: error while loading shared libraries: libcv.so.0: cannot open shared object file: No such file or directory

    Die Datei ist, wie oben zu sehen, aber vorhanden, im Makefile steht auch folgender Eintrag:

    LIBDIR=-L/usr/local/lib

    Kann mir da jemand helfen 😉 🙂 Bin ein Linuxanfänger



  • Damit die Shared Libraries auch zur Laufzeit (also beim Programmstart) gefunden werden reicht der -L Parameter leider nicht aus 😉

    Du hast zwei Möglichkeiten:
    Entweder Du setzt eine Umgebungsvariable (das geht für die aktuelle Shell oder systemweit in z.B. /etc/profile) auf /usr/local/lib

    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    

    Oder Du trägst das Verzeichnis in die Datei /etc/ld.so.conf ein, das ist die systemweite "Datenbank", aus der ermittelt wird wo nach .so Dateien gesucht wird. Wenn Du die Eintragung in diese Datei vornimmst, musst Du anschliessend den Befehl ldconfig ausführen, damit er die Dateien neu einliest.



  • Die erste Variante klappt problemlos. Nun will ich das aber für jede Shell haben, sprich Variante 2 benutzen.

    Allerdings ist der Pfad in der von dir genannten Datei schon vorhanden:

    /usr/X11R6/lib/Xaw95
    /usr/X11R6/lib/Xaw3d
    /usr/X11R6/lib
    /usr/i486-linux/lib
    /usr/i486-linux-libc5/lib=libc5
    /usr/i486-linux-libc6/lib=libc6
    /usr/i486-linuxaout/lib
    /usr/i386-suse-linux/lib
    /usr/local/lib
    /usr/openwin/lib
    /opt/kde/lib
    /opt/kde2/lib
    /opt/kde3/lib
    /opt/gnome/lib
    /opt/gnome2/lib
    include /etc/ld.so.conf.d/*.conf

    Dennoch geht es nicht? Übersehe ich etwas 😕



  • Hab gepennt:

    opencv hat die Datei wohl schon aktualisiert, aber nicht neu eingelesen. Der updatebefehl hat das richtig gestellt 🙂


Anmelden zum Antworten