IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Boost C++ Discussion :

Message d'erreur lors de l'exécution d'un programme utilisant boost


Sujet :

Boost C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Message d'erreur lors de l'exécution d'un programme utilisant boost
    Bonjour,

    Je suis sous Debian et développe en C++ avec l'IDE Eclipse.
    Ayant découvert boost, je souhaite l'utiliser en particulier pour la librairie filesystem qui me sera d'une grande utilité.
    J'ai d'abord installé les paquets debian de boost qui apparemment ne contiennent pas les build de la bibliothèque filesystem. J'ai donc décidé de supprimer les paquet et de télécharger et compiler la dernière version de boost disponible sur sourceforge.

    J'ai suivi la procédure du site de boost et tout s'est compilé (semble-t'il correctement) dans mon dossier utilisateur, ce qui foncièrement ne me pose pas de problème particulier.
    Ensuite j'ai configuré eclipse pour lui donner le chemin "/home/fred/boost_1_39_0/stage/lib" des librairies de boost dont j'ai besoin (fichiers .a et .so) et je lui ai donné le nom des librairies exactes qu'il fallait appeller lors de la compilation donc libboost_filesystem-gcc43-mt-1_39, ainsi que le dossier contenant les headers "/home/fred/boost_1_39_0".

    Eclipse a tout accepté, la complétion des fonction de boost fonctionne et le programme compile. Le problème survient lorsque j'exécute le programme, eclipse m'affiche le message d'erreur suivant en console :
    "/home/fred/workspace/AMFM/Debug/AMFM: error while loading shared libraries: libboost_filesystem-gcc43-mt-1_39.so.1.39.0: cannot open shared object file: No such file or directory"

    Ce fichier se trouve bien dans "/home/fred/boost_1_39_0/stage/lib" j'ai vérifié. Je me doute que j'ai du mal faire ou ne pas faire quelque chose, mais je ne sais pas quoi. Je n'ai pas trouvé d'explications claires pour régler le problème avec Google.

    En espérant que vous pourrez m'aider.
    merci d'avance.

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par Etudiant_bts Voir le message
    Ce fichier se trouve bien dans "/home/fred/boost_1_39_0/stage/lib" j'ai vérifié. Je me doute que j'ai du mal faire ou ne pas faire quelque chose, mais je ne sais pas quoi. Je n'ai pas trouvé d'explications claires pour régler le problème avec Google.
    Une fois que tu as compilé, ton dossier "/home/fred/boost_1_39_0/stage/lib" n'a plus de signification particulière, pour l'exécutable. Ce n'est que pour Eclipse, qui va joindre les informations contenues dans le .a à ton exécutable. Ensuite, les .so sont comme tu le sais les équivalents des DLL. Donc il faut soit les mettre dans le répertoire de ton exécutable, soit dans un répertoire système.

    De cette façon, ça devrait marcher

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Tout d'abord, merci d'avoir répondu

    J'ai fais une copie de tous les fichers .so dans le répertoire contenant l'exécutable de mon programme, le message d'erreur reste identique, alors que le dossier contient bien le fichier demandé

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par Etudiant_bts Voir le message
    Tout d'abord, merci d'avoir répondu

    J'ai fais une copie de tous les fichers .so dans le répertoire contenant l'exécutable de mon programme, le message d'erreur reste identique, alors que le dossier contient bien le fichier demandé
    Et en les mettant dans un répertoire de bibliothèque du système ? (/usr/lib ou /usr/local/lib feront l'affaire normalement)

    Il faut aussi vérifier que le nom et la version coincident avec le fichier .so dont le programme a besoin.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Après une lecture concernant les variables d'environnement sur wikipedia, j'ai déplacé le dossier boost dans /usr/local/lib, il n'est plus dans mon répertoire utilisateur.

    Alp -> J'ai bêtement copié les fichiers .so directement dans le dossier /usr/local/lib sans chercher à les ranger dans un dossier bost, parce que j'ai remarqué que dans /usr/lib les fichiers .so présents étaient pêle-mêle sans rangement particulier, et..... ça s'est exécuté correctement !

    J'ai essayer d'effacer les fichiers .so du dossier /usr/local/lib et j'ai indiqué à la variable d'environnement contenant les chemins des librairies, le dossier exact de boost où étaient stockés ces fichiers à l'origine, une solution qui m'avait été proposée sur un autre forum mais qui n'avait pas fonctionné lorsque boost était installé dans mon répertoire utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export LD_LIBRARY_PATH=/usr/local/lib/boost/stage/lib
    Et là, le programme s'est exécuté correctement, alors que la même commande lorsque boost était dans mon dossier utilisateur n'avait eue aucun effet Encore un mystère...

    Mais le principal c'est que tout fonctionne maintenant, et puis grâce à ça je comprends beaucoup mieux comment ces histoires de link fonctionnent

    Merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Message d'erreur lors de l'exécution d'une macro. depuis un menu contextuel
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2015, 16h44
  2. Message d'erreur lors de l'exécution d'un programme
    Par stemariej dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/12/2009, 07h02
  3. [Fortran 77] Erreur lors de l'exécution d'un programme
    Par mehdi_oca dans le forum Fortran
    Réponses: 1
    Dernier message: 06/03/2009, 04h19
  4. [DI 11.7.3.4] message d'erreur lors de l'exécution d'un Job
    Par cubitus77 dans le forum Alimentation
    Réponses: 1
    Dernier message: 03/10/2008, 06h53
  5. Erreur lors de l'exécution d'un programme
    Par NELLLY dans le forum MATLAB
    Réponses: 3
    Dernier message: 09/05/2007, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo