Création
d'entreprise
Posez votre question Signaler

Module noyau linux: les erreurs dans module.h [Résolu]

stardz31 19Messages postés 18 mai 2008Date d'inscription - Dernière réponse le 20 avril 2012 à 01:25
Bonjour,
je ss tellement désespérée et je sé plus quoi faire !
je ss étudiante en informatique, et j'ai comme thèse de créer un module noyau pour le NAT d'iptables
sous DEBIAN ETCH avec kernel 2.6.18-6-686
alors j'ai essayé d'abord de faire un petit module "hello world", et là je sé pas pourquoi ça ne se compile pas à cause d'erreurs multiples dans "linux/module.h"
j'ai tout essayé: compilation avec gcc et les options pour modules
un makefile aussi mais rien
SVP aidez-moi c'est trèèèèèèèèèèèèès URGENT !!!!!!!!!!!!!!!
MERCIiiiiiiiiiiii
Lire la suite 

Module noyau linux: les erreurs dans module.h »

18 réponses
Réponse
+0
moins plus
Salut,

affiche ce que tu as fait si tu veux trouver d'aide ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Génial!

Voui dis-nous tout: comment tu as compilé (quel est le contenu du makefile et le contenu de ton fichier source. Et l'intégralité des erreurs lors de la compilation.

Pour une fois que quelqu'un pose une question pour faire un driver Linux, on va pas rater ça ;-)
Ajouter un commentaire
Réponse
+0
moins plus
alors pour le moment c un simple hello_world.c :
----------------------------
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void)
{
printk(KERN_INFO "Hello world 1.\n");
/*
* A non 0 return means init_module failed; module can't be loaded.
*/
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}
-------------------------------
et le makefile :
----------------------------------
obj−m += hello−1.o
all:
make −C /lib/modules/$(shell uname −r)/build M=$(PWD) modules
clean:
make −C /lib/modules/$(shell uname −r)/build M=$(PWD) clean
----------------------------------
et un autre Makefile:
--------------------------------
TARGET := hello-1
WARN := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE := -isystem /lib/modules/`uname -r`/build/include
CFLAGS := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC := gcc-3.0

${TARGET}.o: ${TARGET}.c

.PHONY: clean

clean:
rm -rf {TARGET}.o
------------------------------
ce deuxième makefile je l'ai trouvé dans un fichier qui dit qu'il faut avoir gcc-3.0 pour faire -isystem pour les avertissements de module.h


Et pour mon module noyau c pas un driver mais un Protocol Helper pour le protocole SIP il doit faire une translation d'adresse de destination des paquets SIP traversant le NAT (masquerade pour être précise), et je ss loin de pouvoir le compléter car pour le moment je ne pe compiler aucun module même pas helloworld !!!

j'ai besoin d'une solution rapidement

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Re,

regarde ici pour un simple "Hello world!" (voir chapitre 4)
http://pficheux.free.fr/articles/lmf/drivers/
stardz31kilian - 25 mai 2008 à 14:33
Bonjour
ça va bien Mr kilian,
stp j'ai besoin de ton aide si possible le plutot
Ben,
sur un PC il y a Linux debian etch installé
et il y avait avant windows xp,
d'abord il y a eu un probleme depuis linux windows ne marcher plus
alors hier on a refait l'installation de windows sans avoir toucher linux
alors maintenant au démarrage linux n'est pas reconnu il démarre avec windows directement

Je sais pas quoi faire !!!

j'ai besoin de mes fichiers linux
Linux est toujours la mais je sais plus comment y accéder au démarrage

Si t'a une réponse j'attend avec impatience

MERCI
kilian- 25 mai 2008 à 14:37
Salut,

Oui, Windows a écrasé le chargeur de Linux (Grub ou Lilo) et il va falloir le réinstaller, tout en prenant en compte le chargeur de Windows.
Poste ton problème dans le forum Linux, il y a des gens plus compétents que moi dans ce domaine :-)

http://www.commentcamarche.net/forum/forum 13 linux unix
lami20jstardz31 - 25 mai 2008 à 14:47
Salut,

demarre avec le cd d'installation et quand tu arrives à
Press F1 for help, or Enter to boot :

tape rescue


tu vas passer plusieurs étapes (choisir la langue, configurer réseau,etc.) et à un moment donné tu arriveras sur un écran qui te proposera des opérations de récupérations, parmi lesquelles tu trouveras :

Réinstallation de programme de démarrage GRUB

P.S. Je suis d'accord avec kilian, nouveau problème nécessite l'ouverture d'un nouveau sujet.
Ajouter un commentaire
Réponse
+0
moins plus
et les erreurs que j'obtiens sont du genre :

...
/usr/include/linux/sched.h:1564: error: dereferencing pointer to incomplete type
/usr/include/linux/sched.h: Dans la fonction "thaw_process" :
/usr/include/linux/sched.h:1573: error: dereferencing pointer to incomplete type
.... bcp d'autres erreurs dans sched.h
In file included from /usr/include/linuxmodule.h:12,
from hello.c: 4 :
/usr/include/linux/stat.h: Hors de toute fonction :
/usr/include/linux/stat.h:61: error: erreur de syntaxe before "dev_t"
... bcp d'erreur dans stat.h aussi

et de même avec ipc.h, desc.h, module.h

une fois j'ai même enlevé "include<linux/module.h>" et ça s'est compilé très bien et j'ai eu un fichier .o

mais il me faut aussi d'après ce que j'ai vu il faut qu'il soit (.ko) car je suis sur 2.6.x

si il y a une reponse PLEASE !!!
Ajouter un commentaire
Réponse
+0
moins plus
Tiens voici un Makefile générique tiré du livre "Linux Device Drivers 3ème edition" des edition O'reilly
ifneq ($(KERNELRELEASE),)
	obj-m := test.o
else
	KERNELDIR ?= /lib/modules/$(shell uname -r)/build
	PWD := $(shell pwd)

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


Tu remplaces test.o par hello.o si ton fichier s'appelle hello.c
Dis moi ce que ça donne.

(Chez moi ça marche bien et le module affiche bien ce qu'il faut dans les logs)

(interessant ton projet)
kilian- 19 mai 2008 à 13:27
Merci, n'hésite pas si tu as d'autres soucis avec la programmation noyau!
manelz- 20 avril 2012 à 01:02
salut j'ai le même problème il me demande de compiler un module helloworld j'essaye de suivre ces étapes mais ça marche pas
please aide moi
manelz- 20 avril 2012 à 01:25
je tape cette commande $ cc -O -DMODULE -D__KERNEL__ -c hello.c
et voila le message affiché :
hello.c:4: erreur: expected `=', `,', `;', `asm' or `__attribute__' before `<' token
hello.c: In function `init_module':
hello.c:8: erreur: `KERN_INFO' undeclared (first use in this function)
hello.c:8: erreur: (Each undeclared identifier is reported only once
hello.c:8: erreur: for each function it appears in.)
hello.c:8: erreur: expected `)' before string constant
hello.c: In function `cleanup_module':
hello.c:16: erreur: `KERN_INFO' undeclared (first use in this function)
hello.c:16: erreur: expected `)' before string constant
Ajouter un commentaire
Ce document intitulé « Module noyau linux: les erreurs dans module.h » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?