- 论坛徽章:
- 0
|
很简单的一段skull驱动程序
然后make之后却没有出现skull.ko 意思就是编译之后通过且没有报错,就是不出模块文件,请问哪位大侠知道原因不?
用同样的makefile 可以编译hello模块,也会出hello.ko模块,为什么这里却没有呢?
下面是编译结果:
[root@Eric driver]# make
make -C /lib/modules/2.6.9-5.ELsmp/build SUBDIRS=/root/workspace/driver modules
make[1]: Entering directory `/usr/src/kernels/2.6.9-5.EL-smp-i686'
Building modules, stage 2.
MODPOST
make[1]: Leaving directory `/usr/src/kernels/2.6.9-5.EL-smp-i686'
[root@Eric driver]#
#include <linux/module.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <asm/uaccess.h>
MODULE_LICENSE("GPL");
#define MAJOR_NUM 254
static ssize_t chardev_read(struct file *, char *, size_t, loff_t *); // read method
static ssize_t chardev_write(struct file *, const char *, size_t, loff_t*); //write method
struct file_operations chardev_fops =
{
read: chardev_read,
write: chardev_write,
};
static int chardev_var = 0;
static int __init chardev_init(void)
{
int ret;
ret = register_chrdev(MAJOR_NUM, "chardev", &chardev_fops);
if( ret )
{
printk("chardev register failure!");
}
else
{
printk("chardev register success!");
}
return ret;
}
static void __exit chardev_exit(void)
{
int ret;
ret = unregister_chrdev(MAJOR_NUM, "chardev");
if(ret)
{
printk("chardev unregister failure!");
}
else
{
printk("chardev unregister success!");
}
}
static ssize_t chardev_read(struct file *filep, char *buf, size_t len, loff_t *off)
{
if(copy_to_user(buf, &chardev_var, sizeof(int)))
{
return - EFULT;
}
return sizeof(int);
}
static ssize_t chardev_write(struct file *filep, const char *buf, size_t len, loff_t *off)
{
if(copy_from_user(&chardev_var, buf, sizeof(int)))
{
return - EFAULT;
}
return sizeof(int);
}
module_init(chardev_init);
module_exit(chardev_exit);
这是makefile:
obj_m :=skull.o
KERNELDIR := /lib/modules/$(shell uname -r)/build
default:
make -C $(KERNELDIR) SUBDIRS=$(shell pwd) modules
clean:
rm *.o *.ko
[ 本帖最后由 墨小白 于 2009-4-10 14:31 编辑 ] |
|