我这模块编译怎么通不过?
我初学模块编程,上来就碰了钉子.
例子:
----------- main.c ------------
#define MODULE
#include <linux/module.h>
#include <asm/uaccess.h>
int full;
EXPORT_SYMBOL(full); /* 将 full export 出去 */
int init_module( void )
{
printk( "<5> Module is loaded\n" );
return 0;
}
void cleanup_module( void )
{
printk( "<5> Module is unloaded\n" );
}
------------------------------------------------------
编译命令:
gcc -D__KERNEL__ -DMODVERSIONS -DEXPORT_SYMTAB -c \
-I/usr/src/linux/include/linux -include \
/usr/src/linux/include/linux/modversions.h \
main.c
编译出错!
但不加入 # include <asm/uaccess.h> 这行, 就可编译通过。
uaccess.h 定义了什么(是不是与用户访问权限有关).
另外, 在模块装载后,/var/log/message 日志中也无输出.
不知为什么,请帮忙...
问题点数:50、回复次数:6Top
1 楼honix()回复于 2003-05-04 00:18:46 得分 15
gcc ... -I/usr/src/linux/include (没有最后的linux)
Top
2 楼cqutjl(木童)回复于 2003-05-05 21:23:50 得分 30
不能包含〈ASM/UACCESS。H〉(其中的函数用作内核空间和用户空间之间的数据传送)。因为模块不能嵌进任何的常规头文件。
可以把消息优先级改为〈1〉,然后在字符界面下装载,试试看行不?Top
3 楼tomosky(小雨)回复于 2003-05-05 21:54:30 得分 5
不太明白,我正在学习linux下的C ,请高手指点迷津!!!谢谢!!!
怎么样学比较的快!!!Top
4 楼kers007(菜鸟程序员 \`_`/)回复于 2003-05-08 20:55:45 得分 0
谢谢各位问题已经解决.Top




