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

Administration système Discussion :

Utilisation de lib dynamique lors de la création d'un module


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 24
    Par défaut Utilisation de lib dynamique lors de la création d'un module
    Bonjour,

    Je me permets de vous demander de l'aide car je suis en train de créer un module linux et dans ce module j'ai besoin d'utiliser certaines fonctions appartenant à une lib, cette lib est disponible en .a et .so. Lors du lançement du make, il trouve bien la lib mais au moment du linkage il donne des undefined reference pour toutes les fonctions que la lib que j'inclut utilise. Un peu comme s'il avait besoin d'une lib pour faire la lib. Le .a est déjà compilé, je veux juste l'utiliser lors du linkage.

    Voici la trace de la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    aurelien@aurelien:~/Bureau/wii$ make
    make -C /lib/modules/2.6.38-8-generic/build M=/home/aurelien/Bureau/wii
    make[1]: entrant dans le répertoire « /usr/src/linux-headers-2.6.38-8-generic »
      CC [M]  /home/aurelien/Bureau/wii/wiimote.o
      LD [M]  /home/aurelien/Bureau/wii/wiimoteModule.o
      Building modules, stage 2.
      MODPOST 1 modules
    WARNING: "free" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "close" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "__vsnprintf_chk" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "str2ba" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "__errno_location" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "stderr" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "asin" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "ba2str" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "__memcpy_chk" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "__vfprintf_chk" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "bind" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "hci_open_dev" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "hci_close_dev" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "send" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "select" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "socket" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "__fprintf_chk" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "hci_read_remote_name" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "strerror" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "hci_inquiry" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "connect" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "recv" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "hci_devba" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
    WARNING: "ioctl" [/home/aurelien/Bureau/wii/wiimoteModule.ko] undefined!
      LD [M]  /home/aurelien/Bureau/wii/wiimoteModule.ko
    make[1]: quittant le répertoire « /usr/src/linux-headers-2.6.38-8-generic »
    Le makefile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CC      := gcc
    obj-m += wiimoteModule.o
    wiimoteModule-objs := wiimote.o libcwiimote.a
     
    default:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD)
     
     
    clean:
        make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
    PS : La libcwiimote.a est dans le même répertoire que le makefile.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    Dans les options de gcc, je mettrai -lc, histoire de linker avec la libc.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/07/2009, 14h51
  2. [Bonne pratique] Utilisation avec un CMS lors de la création d'un site internet
    Par hmfireball dans le forum Subversion
    Réponses: 0
    Dernier message: 24/12/2008, 18h02
  3. Réponses: 1
    Dernier message: 22/02/2008, 12h30
  4. création d'une lib dynamique
    Par cmoibal dans le forum C
    Réponses: 4
    Dernier message: 07/02/2008, 19h50
  5. Réponses: 2
    Dernier message: 23/08/2006, 18h26

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