LinuxSir.cn,穿越时空的Linuxsir!

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

关于模块

[复制链接]
发表于 2006-2-21 23:47:44 | 显示全部楼层 |阅读模式
我刚刚学模块驱动这方面的编程,问点白痴问题哈.希望大家不吝赐教.谢谢!
刚刚看了一个关于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:06:04 | 显示全部楼层
你的内核版本是多少?
你的编译方法是什么?
回复 支持 反对

使用道具 举报

发表于 2006-2-24 13:46:08 | 显示全部楼层
内核的东西不能按照应用程序那样去编译,源文件所包含的头文件都应该是内核代码中的头文件。如果是2.4版本的内核,你可以根据内和源代码的Makefile文件找到编译模块的编译选项(包括和处理其相关的gcc选项、头文件搜索目录等),按照这些选项来编译你的模块。如果是2.6版本的内核,你需要去内核源代码的目录下,执行:make M="包含这些头文件的目录",包含着个源文件的目录下的Makefile应该这样写:

obj-m += hello.o
回复 支持 反对

使用道具 举报

发表于 2006-2-24 15:04:18 | 显示全部楼层
你是2.6的内核,已经不能这样编译了。。。
echo "obj-m:=hello.o" > Makefile
make -C /path/to/source SUBDIRS=$PWD modules
-C参数是“Linux源代码路径”而不是include路径。 内核源码就会自动帮你编出内核兼容的module了
回复 支持 反对

使用道具 举报

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

本版积分规则

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