Forum Linux.noyau Compilation du usb-skeleton.c

Posté par  .
Étiquettes : aucune
0
15
mar.
2005
Quand j'essaie de compiler l'usb-skeleton, j'ai l'erreur suivant :


In file included from /usr/include/linux/sched.h:12,
from /usr/include/linux/module.h:10,
from usb-skeleton.c:21:
/usr/include/linux/jiffies.h:16: error: erreur d'analyse syntaxique before "jiffies_64"
/usr/include/linux/jiffies.h:20: error: erreur d'analyse syntaxique before "get_jiffies_64"
In file included from /usr/include/linux/cpumask.h:8,
from /usr/include/linux/sched.h:15,
from /usr/include/linux/module.h:10,
from usb-skeleton.c:21:
/usr/include/linux/bitmap.h: Dans la fonction « bitmap_empty »:
/usr/include/linux/bitmap.h:15: error: `BITS_PER_LONG' undeclared (first use in this function)
/usr/include/linux/bitmap.h:15: error: (Each undeclared identifier is reported only once
/usr/include/linux/bitmap.h:15: error: for each function it appears in.)
/usr/include/linux/bitmap.h: Dans la fonction « bitmap_full »:
/usr/include/linux/bitmap.h:29: error: `BITS_PER_LONG' undeclared (first use in this function)
/usr/include/linux/bitmap.h: Dans la fonction « bitmap_equal »:
/usr/include/linux/bitmap.h:44: error: `BITS_PER_LONG' undeclared (first use in this function)
/usr/include/linux/bitmap.h: Dans la fonction « bitmap_shift_right »:
/usr/include/linux/bitmap.h:85: error: `__shr_tmp' undeclared (first use in this function)
/usr/include/linux/bitmap.h: Dans la fonction « bitmap_shift_left »:
/usr/include/linux/bitmap.h:98: error: `__shl_tmp' undeclared (first use in this function)
/usr/include/linux/bitmap.h: Dans la fonction « bitmap_weight »:
/usr/include/linux/bitmap.h:144: error: `BITS_PER_LONG' undeclared (first use in this function)
In file included from /usr/include/linux/sched.h:15,
from /usr/include/linux/module.h:10,
from usb-skeleton.c:21:
/usr/include/linux/cpumask.h: Hors de toute fonction :
/usr/include/linux/cpumask.h:15: error: variable-size type declared outside of any function
In file included from /usr/include/linux/sched.h:15,
from /usr/include/linux/module.h:10,
from usb-skeleton.c:21:


Et encore des lignes d'erreurs en plus..........







J'ai essayé de bidouiller un peu et de chercher sur le net mais je n'ai rien trouvé, quelqu'un a une idée ?

Merci d'avance
  • # plus d'info please

    Posté par  . Évalué à 2.

    pour quel version de kernel tu compile?
    Quel est ton makefile pour compiler ton fichier ?
    Sache que si tu travaille a partir d'un tutoriel trouvé sur le net que la compilation des modules du 2.4 au 2.6 a completement changé.
    Au temps du 2.4 il y avait un makefile specifique a chaque projet
    Maintenant au temps du 2.6 il faut utiliser LE makefile du kernel en lui donnant le repertoire du projet comme source de compilation.
    Bref, donne plus d'info et tu auras en retour des infos plus precise.
    • [^] # Re: plus d'info please

      Posté par  . Évalué à 1.

      Merci de ta réponse,

      je compile ce module pour un 2.6.7 pour l'instant et je n'utilise pas encore de Makefile, l'erreur viendrait donc de là, as-tu plus d'informations sur le sujet ?

      Merci d'avance
      • [^] # Re: plus d'info please

        Posté par  . Évalué à 2.

        Ok, pour les 2.6 on ne peut plus compiler un module a la main.
        Voici un makefile type pour compilation sur la serie 2.6

        ifneq ($(KERNELRELEASE),)
        obj-m := usbdrv.ko
        usbdrv-objs := localdrv.o
        else
        KDIR := /lib/modules/$(shell uname -r)/build
        PWD := $(shell pwd)
        default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
        endif


        cela cree a partir d'un fichier localdrv.o un module usbdrv.ko que tu installe par insmod usbdrv.ko dans le kernel.
        (j'espere ne pas avoir fais d'erreur car je tape de tete, je suis au taf et n'ai pas mes sources sous la main)
        • [^] # Re: plus d'info please

          Posté par  . Évalué à 1.

          Merci beaucoup, je vais tester ça dans l'après midi ....
          • [^] # Re: plus d'info please

            Posté par  . Évalué à 1.

            En fait, je viens de tester, mais je n'ai pas de fichier .o, je n'ai que le usb-skeleton.C donc je vois pas trop comment déjà compiler l'usb-skeleton.c en usb-skeleton.o pour ensuite utiliser ton Makefile

            Merci d'avance
            • [^] # Re: plus d'info please

              Posté par  . Évalué à 1.

              mais normalement voyant un .o absent le makefile doit chercher le .c correspondant pour le compiler.
              quel message t'envoie le make ?
              le makefile doit etre utiliser dans le repertoire de tes sources
              • [^] # Re: plus d'info please

                Posté par  . Évalué à 1.

                Il me dit rien à faire pour défaut
                • [^] # Re: plus d'info please

                  Posté par  . Évalué à 1.

                  je me demande si ce n'est pas parce la mise en blockquote detruit la tabulation ou si les sources du kernels sont correctement installe sur ton poste ? essaie ca en respectant les tabulations:
                   
                  ifneq ($(KERNELRELEASE),)
                  obj-m	:= usbdrv.o
                  usbdrv-objs := localdrv.o
                  else
                     KDIR	:= /lib/modules/$(shell uname -r)/build
                     PWD	:= $(shell pwd)
                  default:
                  	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
                  endif
                  
                  sinon une lecture interessante pour commencer : http://lwn.net/Kernel/LDD3/(...) voir le chapitre 2 merci a Christophe Lucas qui as fait un journal pour signaler la sortie de ce tres bon bouquin

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.