Original von HomerS
Hallo,
ich habe folgendes Problem, ich habe ein Programm erstellt, das ich beim linken mit folgender Datei verlinke: "/usr/local/towitoko/lib/libtowitoko.so.2.0.0" dieses klappt auch, nur wenn ich das kompilierte Programm ausführen möchte, erscheint diese Fehlermeldung: "error while loading shared libraries: libtowitoko.so.2: cannot open shared object file: No such file or directory" kann mir jemand helfen und mir sagen was ich machen muss, damit das Programm ausgeführt wird?
Danke schon im voraus
Hi,
ich vermute stark, der Pfad /usr/local/towitoko/lib gehört nicht zu den Standard-Pfaden in denen dein Linux-System Shared-Libraries sucht. Um das passend zu erweitern musst du /etc/ld.so.conf anpassen und ldconfig aufrufen. Nähere Infos: man ldconfig
Ist das eigentlich ein Privat-Programm von Dir oder etwas anderes?
Falls es dein eigenes ist, solltest du die Shared libs vielleicht besser nach /usr/local/lib oder besser nach /opt/local/lib oder $HOME/lib stellen; jedenfalls sieht es der Linux FHS so vor, denke ich.
Wenn du /usr/local/lib nimmst entfällt der obige Schritt mit ldconfig (wahrscheinlich).
Wenn Du $HOME/lib nimmst, heißt das natürlich, das nur dieser eine User im System die Library verwenden kann, deshalb sollte die /etc/ld.so.conf diesen Pfad natürlich nicht beinhalten. In diesem Fall musst Du (als dieser User) die Umgebungsvariable LD_LIBRARY_PATH setzen, also z.B. in .bash_profile:
export LD_LIBRARY_PATH=$HOME/lib:$LD_LIBRARY_PATH
Das dazulinken der Lib statisch statt dynamisch (shared), halte ich, mit Verlaub, für Schwachsinn. Wozu hat man schließlich Shared Libraries? Falls Du das doch tun willst, muss dem Linker die Option -static mitgeben. Aber ich rate ab.
Ciao,
tacuma
.