//hello.c
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
程序我就不解释了……
Makefile 文件
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.20/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
如果以上你都完成了在 make 时出现这样的错误
shana@shana:~/linux_驱动开发$ make
make: 没有什么可以做的为 `modules'。
原因很简单 你肯定是从我这直接复制的吧~~~呵呵,Makefile格式错误啦~
都是按人家的步骤走的,为什么出现一下错误:
insmod: error inserting './hello.ko': -1 Invalid module format
这是怎么了?
snowlee 于 2013-08-03 17:23:39发表:
KERNELDIR := /lib/modules/2.6.20/build
很可能是这里错了,可看系统里有没有有 2.6.20 这个文件夹
于 2013-07-19 19:20:36发表:
同求,和视频教程一样的Makefile,为什么就有问题
lihaochina 于 2010-08-24 10:12:28发表:
一样的问题 来个大哥回一下 感激不尽
lihaochina 于 2010-08-24 10:09:00发表:
怎么也没详细答案 顶起来先
luoxiangyun 于 2009-01-21 10:08:27发表:
我的也出现了这个问题,而且即使我用insmod hello.ko也还是出错,可否告知我该如何做?:0wl;l1
deepwhite 于 2008-12-10 18:05:56发表:
内核模块编译不是一成不变的,伴随内核版本的变化会有很大不同。
至于为什么你的会出错,是因为:这不是一个可执行程序,是一个module,应该进行加载而不是运行。
以root身份执行: insmod hello.ko即可。