Hallo Welt-Kernel-Modul für Android & unbekannte Verlagerung: 27, wenn insmod
Ich versuche ein einfaches Kernelmodul zu erstellen. Ich versuche, Nachrichten an dmesg zu drucken, aber ich bekomme immer
insmod: init_module 'hello.ko' fehlgeschlagen (Exec Format Fehler) in Android
nachher: dmesg: unbekannter umzug: 27
#include <linux/module.h>
#include <linux/kdb.h>
int init_module(void)
{
printk(KERN_ALERT "Hello world!\n");
return 1;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye world 1.\n");
}
MODULE_AUTHOR("Robert P. J. Day");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_VERSION("2:1.0") ;
MODULE_DESCRIPTION("You have to start somewhere.");
Die make-Datei
obj-m +=hello.o
KERNELDIR ?= ~/android/kernel/common
#KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
CROSS_COMPILE=~/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
ARCH=arm
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(PWD) clean
rm *.symvers
Weiß jemand warum? Und wie bringt man es zum Laufen?
Ich habe nach einer Lektüre festgestellt, dass der Umsiedlungsabschnitt beim Kompilieren in die falsche Richtung zeigt.
Offset Info Type Sym.Value Sym. Name
00000008 0000171b R_ARM_PLT32 00000000 printk
Wann sollte es tatsächlich sein:
Offset Info Type Sym.Value Sym. Name
00000008 0000171c R_ARM_CALL 00000000 printk
Kann jemand raten / wissen, wie das sein könnte? Vielen Dank an Chris Stratton, der mir soweit geholfen hat.
Ich habe nach einer Lektüre festgestellt, dass der Umsiedlungsabschnitt beim Kompilieren in die falsche Richtung zeigt.
Offset Info Type Sym.Value Sym. Name
00000008 0000171b R_ARM_PLT32 00000000 printk
Wann sollte es tatsächlich sein:
Offset Info Type Sym.Value Sym. Name
00000008 0000171c R_ARM_CALL 00000000 printk
Kann jemand raten / wissen, wie das sein könnte? Vielen Dank an Chris Stratton, der mir soweit geholfen hat.