[OT] Linux Kernelmodul Programmierung
Hallo!
Um Linux etwas näher kennen zu lernen habe ich mir das Buch "Linux Treiber
entwickeln" gekauft.
Beim Versuch ein Beispiel nachzubilden stoße ich auf einen Fehler. Soweit ich
das verstanden habe, hat das Makefile selbst Probleme. Zur Sicherheit gebe
ich einmal kurz die C-Datei und das Makefile an.
Das Beispiel:
Datei "mod1.c":
#include <linux/version.h>
#include <linux/module.h>
const int intNULL ( 0 );
static int __init mod_init( void ) {
printk( "module_init called\n" );
return intNULL;
}
static void __exit mod_exit( void ) {
printk( "module_exit called\n" );
}
module_init( mod_init );
module_exit( mod_exit );
// Metainformationen
MODULE_AUTHER( "Mag. Leonhard Landrock" );
MODULE_LICENSE( "GPL" );
MODULE_DESCRIPTION( "Just a module template, without specific
functionality." );
MODULE_SUPPORTED_DEVICE( "none" );
Datei "Makefile":
fneq ($/KERNELRELEASE),)
obj-m := mod1.o
else
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
endif
Wenn ich nun im Verzeichnis des Makefile
("/home/leo/EDV/Linux-Module_Programmierung") "make" aufrufe, erhalte ich
folgendes Ergebnis:
make: *** Keine Targets. Schluss.
"/lib/modules/$(uname -r)/build" zeigt bei mir im übrigen
auf "/lib/modules/2.6.18-4-k7/build". Da gibt es auch ein Makefile.
Ein "make" in diesem Verzeichnis liefert mir folgendes:
leo@veneto:/lib/modules/2.6.18-4-k7/build$ make modules
scripts/Makefile.build:17: /usr/src/linux-headers-2.6.18-4-k7/scripts/basic/Makefile:
Datei oder Verzeichnis nicht gefunden
make[2]: *** Keine Regel,
um »/usr/src/linux-headers-2.6.18-4-k7/scripts/basic/Makefile« zu erstellen.
Schluss.
make[1]: *** [scripts_basic] Fehler 2
make: *** Keine Regel vorhanden, um das Target »include/config/auto.conf«,
benötigt von »include/config/kernel.release«, zu erstellen. Schluss.
Ich vermute, dass ich noch irgendwelche Kernel Dateien nachinstallieren muss.
Hat jemand eine Idee?
Ach ja: OS = Debian Etch.
LG,
Leonhard.
Reply to: