Hallo
Ich wollte mal in die Kernel-Programmierung einsteigen, scheitere aber bereits beim kompilieren dieses Beispiels:
Lubuntu 64-bit Standardkernel
3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux aus uname
Dieser Code ist in einem Ordner in meinem home-Verzeichnis in einer Datei test.c
Alles kopiert vom verlinkten Tutorial.
Code:
/*
* hallo.c - Hallo, Welt! als Kernelmodule
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
/*
* hallo_init - der Entry-Point des Moduls
*/
static int hallo_init(void)
{
printk(KERN_ALERT "hardware stress fractures. Aiee\n");
return 0;
}
/*
* hallo_exit - die exit-function
*/
static void hallo_exit(void)
{
printk(KERN_ALERT "You are screwed!\n");
}
module_init(hallo_init);
module_exit(hallo_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Anyone <anyone@foo.invalid>");
MODULE_DESCRIPTION("Ein einfaches Beispiel");
Im gleichen Ordner liegt dieses makefile:
Code:
obj-m := test.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
Wenn ich mit der cmd dann dieses Verzeichnis als Arbeitsverzeichnis nehme und "sudo make" reinhaue, kommt folgendes:
Code:
make -C /lib/modules/3.11.0-26-generic/build M= modules
make[1]: Betrete Verzeichnis '/usr/src/linux-headers-3.11.0-26-generic'
make[2]: *** Keine Regel vorhanden, um das Target »/usr/src/linux-headers-3.11.0-26-generic/arch/x86/syscalls/syscall_32.tbl«,
benötigt von »arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h«, zu erstellen. Schluss.
make[1]: *** [archheaders] Fehler 2
make[1]: Verlasse Verzeichnis '/usr/src/linux-headers-3.11.0-26-generic'
make: *** [all] Fehler 2
Bin mit der Foren-Sufu und mit Google nicht schlau geworden. Für mich hört sichs so an, als würde Madame versuchen für ein 32-bit System zu erstellen und findet nicht die benötigten Dateien. Es wäre jedenfalls schön, wenn ich jedes Mal einen € kriegen würde, wenn sowas passiert
Schon mal danke für eure Hilfe
Lesezeichen