红联Linux门户
Linux帮助

请教一个加载模块的问题:insmod 出现错误!

发布时间:2008-12-08 22:39:48来源:红联作者:zzcc209
这是一个简单的驱动程序学习入门程序:
//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
这是怎么了?
文章评论

共有 6 条评论

  1. snowlee 于 2013-08-03 17:23:39发表:

    KERNELDIR := /lib/modules/2.6.20/build
    很可能是这里错了,可看系统里有没有有 2.6.20 这个文件夹

  2. 于 2013-07-19 19:20:36发表:

    同求,和视频教程一样的Makefile,为什么就有问题

  3. lihaochina 于 2010-08-24 10:12:28发表:

    一样的问题 来个大哥回一下 感激不尽

  4. lihaochina 于 2010-08-24 10:09:00发表:

    怎么也没详细答案 顶起来先

  5. luoxiangyun 于 2009-01-21 10:08:27发表:

    我的也出现了这个问题,而且即使我用insmod hello.ko也还是出错,可否告知我该如何做?:0wl;l1

  6. deepwhite 于 2008-12-10 18:05:56发表:

    内核模块编译不是一成不变的,伴随内核版本的变化会有很大不同。

    至于为什么你的会出错,是因为:这不是一个可执行程序,是一个module,应该进行加载而不是运行。
    以root身份执行: insmod hello.ko即可。