J'ai construit des bibliothèques à partir de sources et les fichiers après make install
sont dans /usr/local/lib
Par exemple, dans mon cas, j'ai le fichier libodb-2.2.so
qui se trouve dans ce répertoire.
Cependant, lorsque je lance l'exécutable qui s'est lié à libodb
, j'ai eu l'erreur: erreur lors du chargement des bibliothèques partagées: libodb-2.2.so: cannont open shared object file: No such file or directory.
Est-ce à dire que je n'ai pas construit correctement mon exécutable? ou dois-je indiquer au système qu'il peut y avoir des bibliothèques intéressantes dans le dossier /usr/local/lib
aussi ?
J'utilise Ubuntu 12.04, noyau Linux 3.2.0-38-générique.
Pour la session en cours, vous pouvez
exporter LD_LIBRARY_PATH =/lib:/usr/lib:/usr/local/lib
ou pour rendre le changement permanent, vous pouvez ajouter /usr/local/lib
à /etc/ld.so.conf
(ou quelque chose qu'il inclut) et exécutez ldconfig
en tant que root.
Si vous rencontrez toujours des problèmes, exécutez ldd [executable name]
vous montrera les bibliothèques qu'il essaie de trouver et celles qui ne peuvent pas être trouvées.
Si vous avez déjà exécuté ldconfig
après avoir créé la bibliothèque, continuez à lire. Sinon, lire à propos de ldconfig en premier.
/usr/local/lib
n'est peut-être pas dans le chemin d'accès à la bibliothèque utilisé par ldconfig. Vous pouvez simplement faire ceci:
ldconfig /usr/local/lib
Et le truc devrait être ajouté au cache de l'éditeur de liens, mais il est probablement préférable d'ajouter le chemin correctement. Assurez-vous que vous disposez d'un /etc/ld.so.conf.d
répertoire. Si c'est le cas, ajoutez un fichier (appelez-le "usr-local.conf", ou autre), et mettez-y une ligne:
/usr/local/lib
Exécutez maintenant ldconfig
. Si vous n'avez pas le répertoire ld.so.conf.d, vous devriez avoir un /etc/ld.so.conf
fichier et vous pouvez ajouter cette ligne à la fin de celui-ci.