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 :

Compilation : problème pour lier une librairie


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Par défaut Compilation : problème pour lier une librairie
    Bonjour,

    Je suis en train de développer un programme en C qui doit utiliser une librairie écrite en C (pas de problème de compatibilité C/C++ ^^). Dans mon programme, j'utilise les fonctions :
    xc_interface_open(xentoollog_logger*, xentoollog_logger*, unsigned int);
    xc_map_foreign_pages(xc_interface_core*, unsigned int, int, unsigned long const*, int);
    xc_interface_close(xc_interface_core*);
    Ces fonctions se trouvent dans la librairie libxenctrl.so :
    0000000000016ed6 T xc_interface_close
    0000000000016de9 T xc_interface_open
    000000000001e656 T xc_map_foreign_pages
    Lorsque je compile mon appli, je passe la librairie (j'ai mis le chemin absolu pour être certain de la librairie utilisée) :
    gcc gntring3_read_async.c /home/fremals/GVirtus9/modules/gntring/libgntring4.o /usr/local/lib/libxenctrl.so -o ring3_read_async -lm -I /home/fremals/GVirtus9/modules/
    Mais lors de la compilation, ld ne trouve pas les fonctions citées :
    /home/fremals/GVirtus9/modules/gntring/libgntring4.o: dans la fonction « connect_ring »:
    libgntring4.c:(.text+0x328): référence indéfinie vers « xc_interface_open(xentoollog_logger*, xentoollog_logger*, unsigned int) »
    libgntring4.c:(.text+0x348): référence indéfinie vers « xc_map_foreign_pages(xc_interface_core*, unsigned int, int, unsigned long const*, int) »
    libgntring4.c:(.text+0x365): référence indéfinie vers « xc_interface_close(xc_interface_core*) »
    collect2: error: ld returned 1 exit status
    Est-ce que quelqu'un a une idée du problème ?

    Merci !!

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Une bibliothèque ne se passe pas par /usr/local/lib/libxenctrl.so
    mais avec -L/usr/local/lib -lxenctrl

    le -L n'est pas forcément nécessaire, dans ce cas, car ld peut déjà avoir /usr/local/lib dans ses dossiers normaux.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Par défaut
    J'ai passer la librairie en chemin absolu pour être sûr de la version utilisée. Avec l'option -l, c'est le système qui cherche où se trouve la librairie dans un ensemble de répertoire prédéfini (et il est effectivement possible d'indiquer d'autres répertoires où chercher la librairie). Mais au final, le résultat est le même. J'ai déjà essayé d'utilisé l'option -l, mais le résultat était le même. Comme c'est une librairie fournie avec l'installation de Xen, le système utilise de base /usr/local/lib/libxenctrl.so. J'ai recompilé la librairie dans un dossier perso, au cas où un problème serait survenu lors de l'installation de Xen, et je travaille avec les liens absolu pour être sûr des version utilisées à la compilation.

  4. #4
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Bonjour,
    l'ordre aussi est important :

    gcc gntring3_read_async.c /usr/local/lib/libxenctrl.so /home/fremals/GVirtus9/modules/gntring/libgntring4.o -o ring3_read_async -lm -I /home/fremals/GVirtus9/modules/

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 42
    Par défaut
    J'ai essayé mais ça ne fonctionne pas non plus :/

  6. #6
    Membre Expert
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Par défaut
    Je suppose que le «ça ne fonctionne pas non plus» signifie que tu as les mêmes messages d'erreurs ?
    Déjà pour décanter un peu les choses je te propose une vraie compilation séparée. Crée un petit makefile.
    Ensuite regarde aussi du côté de l'option rpath du linker peut-être.

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

Discussions similaires

  1. [Visual C++ 2010] Problème pour linker une librairie
    Par CleeM dans le forum Visual C++
    Réponses: 9
    Dernier message: 30/08/2012, 16h22
  2. Problème pour lier des extensions à une application
    Par blandinais dans le forum Windows 7
    Réponses: 4
    Dernier message: 27/12/2011, 11h51
  3. Réponses: 1
    Dernier message: 20/12/2010, 22h43
  4. Problème pour lier un valeur saisie avec une requête.
    Par jejeapollo dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/08/2007, 12h56
  5. Problème pour lier une librairie... (ANTLR)
    Par loupdeau dans le forum MFC
    Réponses: 4
    Dernier message: 03/06/2005, 10h12

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