Je travaille sur des centos. J’ai installé la version boost 1.45.0 sur mon système. Les programmes sont compilés correctement, mais chaque fois que je tape une commande pour voir la sortie, l’erreur suivante est générée:
./a.out: erreur lors du chargement des bibliothèques partagées: libboost_thread.so.1.45.0: impossible d’ouvrir le fichier d’object partagé: aucun fichier ou répertoire de ce type
- Google :: protobuf + boost :: échec de l'asio
- Vérification croisée d'en-tête / de bibliothèque ABI
- Comment avoir une variable partagée dans la bibliothèque à travers de nombreuses applications sous Linux?
- C ++: Comment copier un object ssortingng dans un tableau int?
- Modification de la valeur entière d'un autre processus à l'aide de process_vm_readv
Comment avez-vous installé les librairies boost?
Le problème que vous rencontrez probablement est que l’éditeur de liens ne peut pas trouver les bibliothèques et lorsque vous avez créé votre programme, vous deviez spécifier manuellement des chemins de bibliothèque supplémentaires pour rechercher des bibliothèques.
Une solution rapide que vous pouvez faire est de définir LD_LIBRARY_PATH
pour inclure le répertoire dans lequel se trouve la bibliothèque de threads boost:
export LD_LIBRARY_PATH=/path/to/boost/libs:$LD_LIBRARY_PATH
./runExecutable
En plus des autres réponses, vous pouvez également définir la balise DT_RPATH
elf lors de la liaison de votre exécutable.
-Wl,-rpath,/path/to/boost/libraries -L /path/to/boost/libraries -lboost_whatever
De cette façon, vous ne devez pas oublier de définir LD_LIBRARY_PATH
si les bibliothèques sont installées dans un emplacement non standard.
Vous devez définir la variable d’environnement LD_LIBRARY_PATH
pour inclure le chemin d’access aux bibliothèques Boost (éventuellement dans /usr/local/lib
, etc.).
En bash, c’est simplement
export LD_LIBRARY_PATH=/path/to/boost:$LD_LIBRARY_PATH