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

C Discussion :

Error while loading shared libraries


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Error while loading shared libraries
    Bonjour à toutes et à tous,

    Voila, j'ai un programme qui compile bien, mais dès que j’exécute ce programme, j'ai cette erreur :

    ./agent: error while loading shared libraries: Unexpected reloc type 0x7c
    Pour compiler ce programme, voila ma ligne de commande :

    gcc [tout les .o] -L. -libperso -o agent -lcrytpo -lssl -luuid
    la libperso.so est dans le dossier courant avec les sources. Je pense que le soucis vient du fait que le "-L." relink aussi les -lcrypto, -lssl et -luuid, mais je ne vois pas comment le régler.

    Pouvez-vous m'aider ?
    Merci d'avance,
    Tankyx.

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 174
    Points
    10 174
    Par défaut
    En faite ton problème n'a rien a voir avec le C
    Le probleme est ta libperso a mon avis, sur linux il ne regarde pas les librairie sur le répertoire courant (comparé a windows).
    Alors soit tu utilise ldconfig soit tu utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$/home/ou_se_trouve_mon_dossier_agent
    ./agent

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    L'export n'a aucun effet, malheureusement j'avais déjà testé.

    Sinon, le ldconfig fait quoi en clair ?

    EDIT : Je suis sous un Mint 15

  4. #4
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 174
    Points
    10 174
    Par défaut
    Google est ton ami
    Mais en gros ça permet si tu mets une librairie manuellement de pouvoir la lire mais c'est pas super 'propre' vu qu'il faudra copier/coller ta lib en sudo dans /lib ou /usr/lib.

    Voici un lien avec quelques exemples d'utilisation (normalement /sbin/ldconfig -v suffit).
    http://manpages.ubuntu.com/manpages/...dconfig.8.html

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Donc si j'ai bien compris, je copie-colle en sudo ma libperso.so dans /usr/lib/, pour je fais un /sbin/ldconfig -v afin de reconstruire le cache ?

    Mais si je fais ainsi, le -L. -lperso devra alors être changer en -lperso tout simplement ?

    EDIT : Quand je copie-colle la libperso.so dans /usr/lib/, et qu'ensuite je fais le /sbin/ldconfig -v, j'ai l'erreur suivante :

    /usr/lib/libperso.so is not an ELF file - it has the wrong magic bytes at the start.

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Salut,

    Et comment est-ce que tu produis libperso ?

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    C'est là le soucis, je reprend le projet déjà commencé, et il y avait déjà cette librairie avec laquelle je dois compiler.

  8. #8
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Tu as le code source ?
    À mon avis il faudrait la recompiler, parce que là il y a un truc qui ne tourne pas rond avec.

    À tout hasard, que donne :
    et

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Après le file libperso.so

    PE32 executable (DLL) (console) Intel 80386, for MS Windows
    Je pense que c'est clair, non compatible Unix.

  10. #10
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Exact.

    Quand j’ai vu le :
    /usr/lib/libperso.so is not an ELF file - it has the wrong magic bytes at the start.
    J’ai senti le truc venir.

    Bon maintenant si tu as les sources de la bibliothèque et que c’est portable, tu devrais pouvoir la recompiler pour Linux.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Question idiote :

    La compilation via le make peut marcher de la même façon ? Si je fais make sous minGW, ca marchera ou dois-je passer par un IDE type visual studio ?

  12. #12
    Membre éclairé
    Inscrit en
    Juillet 2012
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 231
    Points : 870
    Points
    870
    Par défaut
    Non, pas nativement en tout cas.

    Si tu veux compiler avec make, il te faudra au minimum un truc genre MinGW (voire cygwin). Après, ça pourrait fonctionner.
    Sinon, si ton makefile est généré via CMake tu peux lui faire générer des fichiers de projet pour Visual Studio.
    Sinon, bah va falloir importer ton projet dans un IDE, ouais…

    Le plus simple serait de recompiler la bibliothèque (à moins qu‘une version Linux traîne quelque part), mais bon si tu n’as pas les sources tu n’as pas trop le choix

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Effectivement, je n'ai pas les sources des .so

    La je viens de tenter une approche de compilation sous minGW, et ld.exe ne trouve pas les librairies, ce qui était prévisible. Je vais tenter sous VS

    EDIT : J'ai résolu le soucis de librairie. Les .so était bien des librairies pour linux, mais dans le transfert Windows > linux, il y a du avoir un bug ...

    Désolé de vous avoir fait perdre votre temps

  14. #14
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 897
    Points : 219 643
    Points
    219 643
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    @Kannagi : le ldconfig est un peu intrusif à mon gout, pour mes programmes perso, je préfère les lancer de la manière suivante :
    LD_LIBRARY_PATH=./nouveau_dossier_lib ./programme

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2011, 11h46
  2. error while loading shared libraries: libc.so.6
    Par vacknov dans le forum Mandriva / Mageia
    Réponses: 11
    Dernier message: 22/11/2007, 21h00
  3. Réponses: 9
    Dernier message: 08/03/2007, 14h26
  4. [installation 9i] error while loading shared library
    Par ChristopheH dans le forum Installation
    Réponses: 3
    Dernier message: 19/07/2006, 17h36
  5. Réponses: 2
    Dernier message: 05/02/2004, 13h58

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