mercredi 19 novembre 2008, par patrick Deflandre
Linux Debian 2.6.24-etchnhalf.1-amd641ère erreur :
*** CFLAGS was changed in .... Fix it to use EXTRA_CFLAGS.
Solution :
Remplacer les options de compilations CFLAGS par EXTRA_CFLAGS, et ajouter à la ligne de compilation cette nouvelle option.
CFLAGS += $(DEBFLAGS)
CFLAGS += -I$(LDDINC)
devient
EXTRA_CFLAGS += $(DEBFLAGS)
EXTRA_CFLAGS += -I$(LDDINC)
2nd erreur :
error: linux/config.h: Aucun fichier ou répertoire de ce type
Il faut supprimer la référence à linux/config.h
Il semble que ce fichier ait disparu depuis la version 2.6.19 du kernel. On modifie donc main.c de la façon suivante :
#include <linux/config.h>
devient
//#include <linux/config.h>
3ème erreur :
access.c: In function ‘scull_u_open’
access.c:106: error: dereferencing pointer to incomplete type
...
access.c: In function ‘scull_w_open’:
access.c:179: error: ‘TASK_INTERRUPTIBLE’ undeclared (first use in this function)
Il faut ajouter dans access.c l’inclusion suivante :
#include <linux/sched.h>
J’ai donc modifié :
#include <asm/atomic.h>
#include <linux/list.h>
#include "scull.h" /* local definitions */
en
#include <asm/atomic.h>
#include <linux/list.h>
#include <linux/sched.h>
#include "scull.h" /* local definitions */
Il ne reste plus qu’à tester ce module fraîchement compilé.
On charge celui ci avec le script # scull_load, qui créer le fichier nécessaire dans le répertoire /dev.
On écrit dans le module avec par exemple la commande $ ls -l > /dev/scull0
On vérifie que l’écriture c’est bien passé en faisant une lecture avec la commande $ cat /dev/scull0
On doit alors obtenir à l’écran l’équivalent de la commande $ ls -l
Il ne reste plus qu’à décharger le module avec la commande # scull_unload
# scull_init start. Je n’ai pas étudié pour l’instant ce problème.