bonjour
Je veux utiliser (charger) un nouveau pilote de la carte réseau dans le noyau Linux redhat9 (noyau 2.4.20-8), j’ai utilisé le Mikefile si dessous pour compiler le module pilote. j’ai obtenu le module objet(module.o), mais lors du chargement du module en utilisant insmod module.o Le compilateur affiche l’erreur suivante: couldn’t find the kernel version the module was compiled for. Je veux savoir où est le problème et quelle est la solution. #------------ Makefile ------------------ CFLAGS = -Wall -D__KERNEL__ -DMODULES -I/usr/src/linux-2.4.20-8/include -c #OBJS = module.c CC =gcc all : $(CC) $(CFLAGS)module.c #----------------------------------
merci.
# une idée comme ca...
Posté par NeoX . Évalué à 1.
car il faut parfois passer des options à insmod
si tout ce passe bien il te rend la main sans plus de commentaire
2°) compiler un module pour un peripherique se fait souvent en rajoutant (activant) des options dans le noyau.
Il faut donc parfois :
- avoir les sources du noyau,
- copier les eventuels fichiers du fournisseur dans les dossiers sources
- aller dans le dossier contenant les sources (/usr/src/kernelxxxxx)
- faire un make menuconfig (ou qqch dans le genre, ca fait longtemps que je n'ai pas recompiler)
- activer les options correspondant à ta machine (mais si tu ne sais pas ne decoche pas)
en < M > si tu veux que ce soit un module,
en < * > si tu veux que ce soit en dur dans le noyau
- ensuite compiler le noyau et les modules
- installer le nouveau noyau dans le dossier de boot
- mettre à jour le chargeur de demarrage (voir la doc) - grub ou lilo
et pas seulement compiler à part comme pour un programme
et c'est visiblement ce que fait le makefile que tu cite
#------------ Makefile ------------------
CFLAGS = -Wall -D__KERNEL__ -DMODULES -I/usr/src/linux-2.4.20-8/include -c
#OBJS = module.c
CC =gcc
all : $(CC) $(CFLAGS)module.c
#----------------------------------
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.