|
我在编译下面HELLO时,能够通过,且可正常装载。
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk("Hello, iceboy !\n");
return 0;
}
static void hello_exit(void)
{
printk("Goodbye, iceboy !\n");
}
module_init(hello_init);
module_exit(hello_exit);
但是下面的简单字符驱动,却编译不过。如下:
#define _KERNEL_
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
ssize_t test_read(struct file * fp, char *cp , size_t size, loff_t * off)
{
return 0;
}
struct file_operations test = {
read:test_read,
};
int init_module(void)
{
return 0;
}
void cleanup_module(void)
{
}
报的错误是:
xtest.C:23: variable `file_operations test' has initializer but incomplete type
xtest.C:23: storage size of `test' isn't known
我的内核是2.4的,编译环境:
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
大侠们,多多指教啊!
还有个问题,加上_kernel_ 就上面一个错,但改成__kernel__时,就一大推头文件包含错误。 |
|