- 论坛徽章:
- 0
|
10可用积分
小弟刚接触LINUX不久,现在老师有个项目需要写个驱动,我这几天查了很多书,在我们这个论坛上也下了
很多最简单的驱动源码,人家说在内核2.4.20-8下就能编译并能用测试程序测试成功,可我这个连编译都要出错,而且我
改了很多天还是不行,万般无奈之下,菜鸟又只有麻烦一下各位大虾了,谢谢!!源程序如下:
#include "linux/module.h"
#include "linux/kernel.h"
#include "linux/version.h"
#include "linux/config.h"
#include "linux/fs.h"
#include "linux/init.h"
MODULE_LICENSE("GPL" ;
//读设备
static ssize_t demomodule_read(struct file *file,char *buf,size_t count,loff_t *f_pos)
{
printk("reading my device...\n" ;
}
//写设备
static ssize_t demomodule_write(struct file *file,const char *buf,size_t count,loff_t *f_pos)
{
printk("writing my device...\n" ;
}
//文件操作结果,错误提示中好象是这里有问题,但是我确实找不出来啊
static struct file_operations demomodule_fops =
{
read:demomodule_read, //我改为.read = demomodule_read 还是不行
write:demomodule_write,
};
//初始化模块
int init_module(void)
{
int flag = register_chrdev( 250 , "demomodule" , &demomodule_fops );
if( flag<0 )
{
printk("the device init is failed !\n" ;
return 1;
}
else
printk("register my device succeed !\n" ;
return 0;
}
//卸载模块
void clearnup_module(void)
{
int flag = unregister_chrdev( 250 , "demomodule" ;
if( flag<0 )
printk("can not unregister the device !\n" ;
else
printk("unregister device succeed !\n" ;
}
上面就是我的源程序,下面是我的makefile文件内容:
compile = gcc -DMODULE -D_KERNEL_DLINUX -I/usr/src/linux-2.4.20-8/include -c demomodule.c
#我改为compile = gcc -DMODULE -D_KERNEL_DLINUX -I/usr/src/linux-2.4/include -c demomodule.c还是不行
demomodule.o : demomodule.c
$(compile)
我是在winxp的VM下调试的,装的RH9.0,内核是2.4.20-8,出错信息请见下面图片,请各位大虾指点一下吧!
谢谢各位了!!! |
最佳答案
查看完整内容
我在rh7.2上试了是可以的gcc -D__KERNEL__ -I/usr/include -c drv.c
|