LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1036|回复: 6

关于模块的编程

[复制链接]
发表于 2006-2-22 22:20:41 | 显示全部楼层 |阅读模式
我刚刚学模块驱动这方面的编程,问点白痴问题哈.希望大家不吝赐教.谢谢!
刚刚看了一个关于hello world的模块编程.
代码是这样的.
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);


我将文件保存为hello.c然后make hello.出现的错误几大页.请问这种代码怎么来编译呢?谢谢!
发表于 2006-2-22 23:04:20 | 显示全部楼层
需要-D__KERNEL__  -DKMODULE -DKBUILD_BASENAME=hello -nostdinc -Wall -I ./ -I /path/to/kernel/include
回复 支持 反对

使用道具 举报

发表于 2006-2-23 17:55:53 | 显示全部楼层
linux1.0核心游记中有讲述!比ldd3好理解!
回复 支持 反对

使用道具 举报

发表于 2006-2-23 18:15:35 | 显示全部楼层
在2.6内核中不需要定义宏就可以导入内核模块了。。。内核会强行定义这些东东。。。。
你的格式是2.6的, 你需要当前内核的kernel-x.x.x-devel包才可以开发内核模块。
回复 支持 反对

使用道具 举报

发表于 2006-2-25 17:12:35 | 显示全部楼层
你的Makefile可能有问题。
我用的Kdevelop就有这种情况。
如果是的话修改其中的TARGET,就行了!
回复 支持 反对

使用道具 举报

发表于 2006-2-26 11:29:48 | 显示全部楼层
同问!
在ldd3里已经提供了makefile的代码,但是不好用,在执行之后虽然没有报错,但是却没生成hello.ko文件,不知道是什么原因。
回复 支持 反对

使用道具 举报

发表于 2006-2-26 21:06:10 | 显示全部楼层
the hello.c and makefile in <ldd3> have no problems.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表