忘记密码   免费注册 查看新帖 | 论坛精华区
ChinaUnix.net
  平台论坛 博客 微博 读书 人才 精华 文库 自测 | 频道操作系统 开发 数据库 存储 服务器 网络 IT新闻 Linux 下载 Power用户组
最近访问板块 发新帖
查看: 3412 | 回复: 22

我想写个模块 碰到的问题 [复制链接]
更多

Rank: 1

帖子
837
主题
151
精华
0
可用积分
979
专家积分
50
在线时间
464 小时
注册时间
2008-07-12
最后登录
2011-02-21
论坛徽章:
0
发表于 2008-11-11 10:13:11 |显示全部楼层
10可用积分
#include <linux/module.h>
#include <linux/kernel.h>

int init_module(void)
{
        printk("<1>Hello World.\n");
        return 0;
}
void cleanup_module(void)
{
        printk("<1>Goodbye world.\n");
}

编译之后 出现大量类似的错误 我只copy了一部分 也不知道哪儿出错了  请高手指点一下


/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘search_module_extables’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:484: 警告:未使用的参数 ‘addr’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_text_address’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:490: 警告:未使用的参数 ‘addr’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘__module_text_address’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:496: 警告:未使用的参数 ‘addr’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘is_module_address’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:501: 警告:未使用的参数 ‘addr’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘__module_get’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:511: 警告:未使用的参数 ‘module’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘try_module_get’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:515: 警告:未使用的参数 ‘module’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_put’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:520: 警告:未使用的参数 ‘module’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_address_lookup’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:529: 警告:未使用的参数 ‘addr’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:530: 警告:未使用的参数 ‘symbolsize’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:531: 警告:未使用的参数 ‘offset’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:532: 警告:未使用的参数 ‘modname’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_get_kallsym’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:537: 警告:未使用的参数 ‘symnum’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:538: 警告:未使用的参数 ‘value’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:539: 警告:未使用的参数 ‘type’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:539: 警告:未使用的参数 ‘name’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:540: 警告:未使用的参数 ‘namelen’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_kallsyms_lookup_name’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:545: 警告:未使用的参数 ‘name’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘is_exported’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:550: 警告:未使用的参数 ‘name’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:550: 警告:未使用的参数 ‘mod’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘register_module_notifier’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:555: 警告:未使用的参数 ‘nb’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘unregister_module_notifier’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:561: 警告:未使用的参数 ‘nb’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_add_driver’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:575: 警告:未使用的参数 ‘module’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:575: 警告:未使用的参数 ‘driver’
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h: 在函数 ‘module_remove_driver’ 中:
/usr/src/kernels/2.6.18-8.el5-i686/include/linux/module.h:579: 警告:未使用的参数 ‘driver’

最佳答案

duanjigang 查看完整内容

一个入门例子。。俺都不知道发了多少遍了 make然后 insmod hello.ko 然后dmesg rmmod hello dmesg [ 本帖最后由 duanjigang 于 2008-11-12 09:53 编辑 ]
-------------------

还是那么的菜

-------------------

Rank: 8Rank: 8

帖子
3895
主题
198
精华
12
可用积分
21424
专家积分
147
在线时间
691 小时
注册时间
2005-10-23
最后登录
2012-02-07
论坛徽章:
0
发表于 2008-11-11 10:13:12 |显示全部楼层
一个入门例子。。俺都不知道发了多少遍了
//hello.c by duanjigang

#include <linux/module.h>
static int __init exam_init(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk("<1>Hello World.\n");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}

static void __exit exam_exit(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk("<1>Goodbye world.\n");
}

module_init(exam_init);
module_exit(exam_exit);
MODULE_LICENSE("GPL");


#Makefile
MODULE_NAME :=hello
obj-m   :=$(MODULE_NAME).o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD       := $(shell pwd)
all:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$(MAKE) -C $(KERNELDIR) M=$(PWD)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;


make然后 insmod hello.ko
然后dmesg
rmmod hello
dmesg

[ 本帖最后由 duanjigang 于 2008-11-12 09:53 编辑 ]
2012-01-01: unix系统集中管理利器cmtkit的windows客户端发布了! http://jigang.bv2.mianfeidns.com/index.php

Rank: 1

帖子
837
主题
151
精华
0
可用积分
979
专家积分
50
在线时间
464 小时
注册时间
2008-07-12
最后登录
2011-02-21
论坛徽章:
0
发表于 2008-11-11 10:24:34 |显示全部楼层
我的makefile
TARGET  := hello
WARN    := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
INCLUDE := -isystem /usr/src/kernels/2.6.18-8.el5-i686/include
CFLAGS  := -O2 -DMODULE -D__KERNEL__ ${WARN} ${INCLUDE}
CC      := gcc
${TARGET}.o : ${TARGET}.c
.PHONY  : clean
clean:
        rm -rf {TARGET}.o
-------------------

还是那么的菜

-------------------

Rank: 1

帖子
837
主题
151
精华
0
可用积分
979
专家积分
50
在线时间
464 小时
注册时间
2008-07-12
最后登录
2011-02-21
论坛徽章:
0
发表于 2008-11-11 10:50:27 |显示全部楼层
自己顶一个
-------------------

还是那么的菜

-------------------

Rank: 5Rank: 5

帖子
1947
主题
132
精华
4
可用积分
7472
专家积分
5
在线时间
83 小时
注册时间
2008-08-29
最后登录
2011-11-07
论坛徽章:
0
发表于 2008-11-11 17:14:59 |显示全部楼层
你这个模块不全啊,找个例子看看

Rank: 5Rank: 5

帖子
1947
主题
132
精华
4
可用积分
7472
专家积分
5
在线时间
83 小时
注册时间
2008-08-29
最后登录
2011-11-07
论坛徽章:
0
发表于 2008-11-11 17:16:06 |显示全部楼层
像这样,把初始化清除函数注册一下。
late_initcall(at91snd_init);
module_exit(at91snd_cleanup);

Rank: 5Rank: 5

帖子
1947
主题
132
精华
4
可用积分
7472
专家积分
5
在线时间
83 小时
注册时间
2008-08-29
最后登录
2011-11-07
论坛徽章:
0
发表于 2008-11-11 17:47:33 |显示全部楼层

Rank: 3Rank: 3

帖子
2544
主题
87
精华
0
可用积分
4632
专家积分
236
在线时间
148 小时
注册时间
2007-03-13
最后登录
2011-11-07
论坛徽章:
0
发表于 2008-11-11 18:31:36 |显示全部楼层
老兄,偶不懂,幫頂了,
世界网络www.linkwan.com 全面提供网速测试、路由查询、网站反应速度测试等专业服务

Rank: 1

帖子
287
主题
23
精华
0
可用积分
346
专家积分
5
在线时间
2961 小时
注册时间
2007-03-28
最后登录
2011-12-06
论坛徽章:
0
发表于 2008-11-12 09:56:06 |显示全部楼层

楼主的代码连模块入口都没有定义呀

Rank: 1

帖子
837
主题
151
精华
0
可用积分
979
专家积分
50
在线时间
464 小时
注册时间
2008-07-12
最后登录
2011-02-21
论坛徽章:
0
发表于 2008-11-12 10:16:10 |显示全部楼层
原帖由 duanjigang 于 2008-11-12 09:49 发表
一个入门例子。。俺都不知道发了多少遍了
//hello.c by duanjigang

#include
static int __init exam_init(void)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printk("Hello World.\n"; ...

谢谢 给分了
-------------------

还是那么的菜

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

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP