Compilé un programme C++ soulève “impossible d'ouvrir le fichier objet partagé” sur un autre système si le fichier est présent

J'ai écrit un petit programme qui nécessite un certain nombre de bibliothèques, y compris libboost_filesystem, libboost_program_options et libcurl.

J'ai compilé sur mon ordinateur à la maison et a pris le binaire à mon ordinateur au travail pour le tester. Mais là, il donne le message d'erreur suivant lorsque j'essaie de démarrer le programme:

error while loading shared libraries:
libboost_filesystem.so.1.42.0: cannot
open shared object file

Mais quand je fais une recherche de ce fichier, je vois qu'il existe dans:
/usr/lib/libboost_filesystem..1.42.0

Ai-je quelque chose de mal lors de la compilation et de raccordement de mon programme? Si oui, que dois-je faire pour le faire fonctionner sur d'autres machines?

Je trouve souvent que ldd pouvez m'aider à trouver ce qui ne va pas. Ce n' ldd ./your_executable dire?
À partir de ce que vous avez dit, il semble que ça devrait fonctionner. Il y a peut être un bit 32 vs 64 bits conflit. Essayez d'exécuter file ./your_executable et file /usr/lib/libboost_filesystem.so.1.42.0 pour vérifier que les architectures match 🙂
wow, vous avez raison. le programme est compilé en 32 bits et la bibliothèque actuelle est 64bit
eh bien, le mélange application 32 bits et 64 bits du système d'exploitation ne fonctionne pas bien 🙂

OriginalL'auteur tyrondis | 2010-11-02