我目前正在尝试运行我的Hello World内核模块,但我有点挣扎,我不知道为什么。
首先
uname -r
2.6.32-358.23.2.el6.x86_64
我的Hello.c
#include <linux/module.h> /* Needed by all modules */
#include <linux/kernel.h> /* Needed for KERN_INFO */
#include <linux/init.h> /* Needed for the macros */
static int __init hello_start(void)
{
printk(KERN_INFO "Loading hello module...\n");
printk(KERN_INFO "Hello world\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "Goodbye Mr.\n");
}
module_init(hello_start);
module_exit(hello_end);
MODULE_LICENSE("GPL");
我的Makefile
obj-m += hello.o
all:
make -C /lib/modules/`uname -r`/build M=`pwd` modules
clean:
make -C /lib/modules/`uname -r`/build M=`pwd` clean
运行时出现错误消息
$ sudo insmod ./hello.ko
insmod: error inserting './hello.ko': -1 Invalid module format
dmesg输出
hello: no symbol version for module_layout
文件夹
中的文件hello.c hello.ko hello.ko.unsigned hello.mod.c hello.mod.o hello.o include Makefile modules.order Module.symvers
插入此模块并完成我的进一步工作需要什么?