当前位置: 技术问答>linux和unix
小弟因工作需要,要写Linux的设备驱动,正学习中,一起没搞过Linux方面的开发,没经验,现碰到一个简单问题,请多多指点
来源: 互联网 发布时间:2015-05-16
本文导语: 我写了一个非常简单的使用proc的小例子mytest.c,希望能在Linux下运行,Linux使最新的Redhat9,下面是源代码: #ifndef MODULE #define MODULE #endif #include #include #include int test_read_proc(char *buf, char **start, off_t offset,int cou...
我写了一个非常简单的使用proc的小例子mytest.c,希望能在Linux下运行,Linux使最新的Redhat9,下面是源代码:
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
int test_read_proc(char *buf, char **start, off_t offset,int count, int *eof, void *data)
{
int len;
len = sprintf(buf,"nOnly a testn");
*eof = 1;
return len;
}
int init_module(void)
{
create_proc_read_entry("test2003",
0,
NULL, /* parent dir */
test_read_proc,
NULL /* client data */);
return 0;
}
void cleanup_module(void)
{
remove_proc_entry("test2003", NULL /* parent dir */);
}
可是一编译就出错,而起报的错误报到头文件中了。In file included from mytest.c:7:
/usr/include/linux/proc_fs.h:70: parse error before "atomic_t"
/usr/include/linux/proc_fs.h:72: parse error before "rdev"
/usr/include/linux/proc_fs.h:187: parse error before "kdev_t"
/usr/include/linux/proc_fs.h:203: parse error before "void"
更有甚者,我即使即使一个空的init_module和clearup_module,仅仅包含proc_fs.h也出同样的错误,如下:
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
int init_module(void)
{
return 0;
}
void cleanup_module(void)
{
}
请熟悉此道的朋友指点指点,领我进门,分是小事,要多少加多少,我不胜感激。
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
int test_read_proc(char *buf, char **start, off_t offset,int count, int *eof, void *data)
{
int len;
len = sprintf(buf,"nOnly a testn");
*eof = 1;
return len;
}
int init_module(void)
{
create_proc_read_entry("test2003",
0,
NULL, /* parent dir */
test_read_proc,
NULL /* client data */);
return 0;
}
void cleanup_module(void)
{
remove_proc_entry("test2003", NULL /* parent dir */);
}
可是一编译就出错,而起报的错误报到头文件中了。In file included from mytest.c:7:
/usr/include/linux/proc_fs.h:70: parse error before "atomic_t"
/usr/include/linux/proc_fs.h:72: parse error before "rdev"
/usr/include/linux/proc_fs.h:187: parse error before "kdev_t"
/usr/include/linux/proc_fs.h:203: parse error before "void"
更有甚者,我即使即使一个空的init_module和clearup_module,仅仅包含proc_fs.h也出同样的错误,如下:
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
int init_module(void)
{
return 0;
}
void cleanup_module(void)
{
}
请熟悉此道的朋友指点指点,领我进门,分是小事,要多少加多少,我不胜感激。
|
参考LDD,《Linux Device Driver》
|
你可能没有定义__KERNEL__宏
用下面的命令行编译
gcc -c -D__KERNEL__ -DLINUX -DMODULE -DMODULEVERSION mytest.c
用下面的命令行编译
gcc -c -D__KERNEL__ -DLINUX -DMODULE -DMODULEVERSION mytest.c