Problème avec module.h lors de la compilati

rufa Messages postés 175 Statut Membre -  
rufa Messages postés 175 Statut Membre -
salut,j'ais copier un petit programme qui affiche hello word,je les compilé avec [B] gcc[/B],mais il m'affiche [B]"hello.c:2:27: erreur: linux/module.h : Aucun fichier ou répertoire de ce type"[/B],le fichier s'appel hello.c,je travail avec [B]fedora 6[/B],alors quelqu'un peut m'aidai svp,voici lecode source:
#include <linux/kernel.h>
#include <linux/module.h>
#if CONFIG_MODVERSIONS==2
#define MODVERSIONS
#include <linux/modversions.h>
#endif
int init_module()
{
printk("Hello, world - this is the kernel speaking\n");
return 0;
}
void cleanup_module()
{
printk("Short is the life of a kernel module\n");
}

5 réponses

kilian Messages postés 8854 Statut Modérateur 1 526
 
Salut,

Il ne faut pas compiler avec des commandes gcc directement. Tu peux le faire mais c'est compliqué, il faut indiquer le chemin vers les headers du noyau, trouver les bonnes options de gcc etc....
Non l'idéal c'est de prendre un Makefile qui appele le Makefile du kernel.

Celui-ci est un bon exemple:
#Note: ce Makefile provient du livre Linux Device Driver (3ème édition) des éditions O'Reilly, son utilisation
#est donc sujette à la licence Creative Common Non Commercial Share Alike (https://creativecommons.org/licenses/by-nc-sa/2.0/

ifneq ($(KERNELRELEASE),)
	obj-m := hello.o
else
	KERNELDIR ?= /lib/modules/$(shell uname -r)/build
	PWD := $(shell pwd)

default:
	$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif


Comme ton fichier source s'appele hello.c alors j'ai mis hello.o pour obj-m
Il faudra changer selon le nom de ton fichier source.

Encore une chose: le paquet kernel-headers (ou linux-headers) de ta distribution doit être installé.
0
rufa Messages postés 175 Statut Membre 4
 
salut est merci beaucoup pour la réponse,je vais essayer de compilé avec le makefile.
-1
rufa Messages postés 175 Statut Membre 4 > rufa Messages postés 175 Statut Membre
 
salut,j'ai essayer de compilé avec make mais ça na pas marcher,j'ais fait:
#make hello.c
reponse: rien à faire pour le << hello.c>>
pardent pour le retard j'avait des problèmes pour recupéré le debian.
-1
rufa Messages postés 175 Statut Membre 4 > rufa Messages postés 175 Statut Membre
 
salut encore une fois,pareil avec:
#make hello
la réponse est:
cc hello.c -o hello
hello.c:2:27: erreur: linux/module.h : Aucun fichier ou répertoire de ce type
make: *** [hello] Erreur 1
-1
rufa Messages postés 175 Statut Membre 4 > rufa Messages postés 175 Statut Membre
 
J'ai créer au tous début le fichier makefile est j'ais copier ce que vous m'avait donner.
Avec la commande make toute seul il va chercher un fichier makefile par defaut,j'ais fait :
#make
alors la réponse est:
make -C /lib/modules/2.6.18-1.2798.fc6/build M=/root modules
make: *** /lib/modules/2.6.18-1.2798.fc6/build: Aucun fichier ou répertoire de ce type. Arrêt.
make: *** [default] Erreur 2

j'ai préféré écrir tous mes érreurs pour que tous le monde puisse en profité.
-1
rufa Messages postés 175 Statut Membre 4
 
salut,pour
#yum install linux-headers
la répense et
Could not retrieve mirrorlist http://mirrors.fedoraproject.org/mirrorlist?repo=core-6&arch=i386 error was
[Errno 4] IOError: <urlopen error (-3, '\xc3\x89chec temporaire dans la r\xc3\xa9solution du nom')>
Error: Cannot find a valid baseurl for repo: core pas de pachetages disponibe.

est pour:
#get-pat install linux-headers-$(uname -r)
la répense est
bash: apt-get: command not found
il ne reconnait pas la commnde,ce la veut dire que quelque chose n'est pas installer,est quand j'introduit les commandes je suis toujours connecter a internet.
0
kilian Messages postés 8854 Statut Modérateur 1 526
 
Tu n'as pas installé le paquet linux-headers apparemment.
-1
rufa Messages postés 175 Statut Membre 4
 
salut est merci,comment installer le packet linux-headers ?
yum install headers-linux
-1
rufa Messages postés 175 Statut Membre 4 > rufa Messages postés 175 Statut Membre
 
salut,j'ai esseyer avec:
#apt-get install linux-headers-$(uname -r)
mais ça ne fonction pas.
-1
kilian Messages postés 8854 Statut Modérateur 1 526 > rufa Messages postés 175 Statut Membre
 
Tu as quoi comme erreur?
-1
kilian Messages postés 8854 Statut Modérateur 1 526
 
Could not retrieve mirrorlist http://mirrors.fedoraproject.org/mirrorlist?repo=core-6&arch=i386 error was
[Errno 4] IOError: <urlopen error (-3, '\xc3\x89chec temporaire dans la r\xc3\xa9solution du nom')>


Tu fais ça depuis un ordinateur qui est bien connecté à internet n'est ce pas?
Sinon réessaie, ça a l'air d'être temporaire. En tout cas la page existe bel et bien.
-1
rufa Messages postés 175 Statut Membre 4
 
salut,merci je vait essayer maintenent,le problème c'est que des le début j'ais pas fait une installation developpement de fedora 6.
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rufa Messages postés 175 Statut Membre 4
 
pardent et svp dit moi si ce makefile marche bien sous votre system:
# Makefile for a basic kernel module
CC=gcc
MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX
hello.o: hello.c /usr/include/linux/version.h
$(CC) $(MODCFLAGS) -c hello.c
/*la suite n'est pas vraiment très intéréssente,que des messages*/
echo insmod hello.o to turn it on
echo rmmod hello to turn if off
echo
echo X and kernel programming do not mix.
echo Do the insmod and rmmod from outside X.
-1
rufa Messages postés 175 Statut Membre 4
 
oui je le fait depuis un ordinateur connecter a internet,et j'ais essayer plus ieurs fois mais ça ne marche pas .
-1
kilian Messages postés 8854 Statut Modérateur 1 526
 
Ce n'est pas mon makefile qui pose problème.
C'est le fait que tu n'as pas les headers de ton noyau. Pour ton soucis avec yum je ne sais pas quoi te dire. Je connais pas bien ce logiciel, il faudrait que tu règles déjà ce problème avant d'attaquer le reste.
-1
rufa Messages postés 175 Statut Membre 4 > kilian Messages postés 8854 Statut Modérateur
 
salut,je pense que je vais réinstaller fedora 6 et cette fois avec installation "développement" ou utilisé debain il et beaucoup plus fort.,je vous le ferais savoir,merci.
-1