berniechen 发表于 2006-5-18 14:54:08

加载模块失败,请高手帮忙

*********hello.c

#include<linux/init.h>
#include<linux/module.h>
#include"hello.h"

MODULE_LICENSE("Dual BSD/GPL");


static int hello_init(void)
{
      printk(KERN_ALERT "hello the world\n");
                msg();
      return 0;
}

static void hello_exit(void)
{
      printk(KERN_ALERT "Goodbye\n");
}

module_init(hello_init);
module_exit(hello_exit);

*************hello.h
void msg(void);

***************hello2.c
void msg(void)
{
      printk(KERN_ALERT "I am in the hello2.c\n");
}

****************makefile
obj-m :=hello.o
hello-objs:= hello.o hello2.o hello.h

makefile是放在源码树中的 linux/drivers/char/chen下
在char中的makefile加了一行
obj-m+=chen/hello.o
之前只写一个单文件(没有msg函数)的模块没有问题,现在我想试试多个文件
编译时警告说msg()没定义
但可以生成hello.ko
用insmod加载时失败,报错说有未定义的符号
内核2.6.16.2
我觉得应该不是makefile得问题

strongzgy 发表于 2006-6-11 11:16:56

是不是因为obj-m := hello.o中的hello.o和
hello-objs := hello.o hello2.o hello.h中的hello.o冲突的缘故?
还有hello.h没有必要加进去的
页: [1]
查看完整版本: 加载模块失败,请高手帮忙