linux / module.h: Aucun fichier ou répertoire de ce type
je suis un débutant et je suis à l'essai de certaines bases de la programmation du noyau linux. Aujourd'hui matin, j'ai ouvert le module.h fichier VIM et fermé sans enregistrer les modifications. Après ça, je ne suis pas en mesure de compiler un de mes codes. Je reçois le message d'erreur suivant
[root@localhost helloworld]# cc helloworld.c
helloworld.c:1:25: error: linux/module.h: No such file or directory
[root@localhost helloworld]#
Voici un exemple de code qui a été exécuté avec succès jusqu'à la dernière journée.
#include<linux/module.h>
#include<linux/kernel.h>
int init_module(void)
{
printk("HELLO WORLD");
return 0;
}
void cleanup_module(void)
{
printk("GOODBYE");
}
J'ai cherché pour le module.h fichier comme suit et il existe
[root@localhost usr]# find . -name module.h
./src/kernels/2.6.18-194.el5-i686/include/asm-x86_64/module.h
./src/kernels/2.6.18-194.el5-i686/include/asm-i386/module.h
./src/kernels/2.6.18-194.el5-i686/include/linux/module.h
./include/sepol/policydb/module.h
./include/sepol/module.h
./include/kde/kunittest/module.h
[root@localhost usr]#
Merci de m'aider.
J'utilise CentOS dans virtual box.
source d'informationauteur ajishalfred
Vous devez vous connecter pour publier un commentaire.
Vous essayez de compiler ce module avec la plaine
gcc
avec aucun desentourant kbuild cadre. Vous ont peut-être eu quelque chose à travailler dans le
passé avec cette approche, mais il est douloureux horrible horrible pour essayer de maintenir
un module en utilisant rien d'autre que pur-kbuild
Makefile
approches. J'aigaspillé trop de ma vie à lutter contre kbuild et je ne veux pas de même pour
arriver avec vous -- embrasser kbuild et laissez-vous aider à construire votre module. Merci
lire
Documentation/kbuild/modules.txt
avant d'écrire une ligne de code de.Ce que vous devez faire est de créer un
Makefile
pour votre module. Son contenu devraitressembler à ceci:
Je sais que c'est beaucoup plus compliqué que la plupart des
Makefile
s, vous avez l'habitude de voir,mais il sert un double but. Si vous venez d'exécuter
make
dans votre répertoire, il varé-invoquer
make
d'utiliser le kbuild mécanisme à partir du noyau en cours d'exécution(pris en charge au moins un lien symbolique à partir de
/lib/modules/.../build
à l'emplacement correct).
La ré-invoqué
make
de commande ($(MAKE)
) permettra de construire votre module etvous faire économiser plus de temps que vous ne pourrez jamais apprécier. (Vraiment.)
Garder
Documentation/kbuild/modules.txt
à vos côtés pour mener à bien ce travail.Remarque:
Documentation/kbuild/modules.txt
peut être disponible sur votre système linux à/usr/share/linux-headers-$(uname -r)/Documentation/kbuild/modules.txt
Installer le paquet kernel-devel:
Après cela, vous devriez avoir:
Vous pouvez ensuite passer à quelque chose comme:
pour le compilateur
Vous pouvez avoir besoin d'un Makefile pour compiler votre module.J'ai essayé sur mon ordinateur personnel(Ubuntu 10.04.4),je rencontre le même problème lorsque j'utilise
gcc -c hello.c
,mais à l'aide d'un Makefile, tout sera OK.Le noyau vesion est 2.6.32-54-generic