免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4460 | 回复: 9

怎么把ldd3中hello world模块编进内核?书中看不懂,望指点。。。 [复制链接]

论坛徽章:
0
发表于 2011-07-22 15:10 |显示全部楼层
本帖最后由 tczf1128 于 2011-07-22 16:31 编辑

那个内核源代码树是什么意思,望高手把编译的具体过程贴下来,谢谢

论坛徽章:
0
发表于 2011-07-22 16:38 |显示全部楼层

论坛徽章:
0
发表于 2011-07-23 17:05 |显示全部楼层
求 指 点

论坛徽章:
0
发表于 2011-07-23 22:26 |显示全部楼层
我写了个文章。。有的。。在驱动开发这个版里搜。。

论坛徽章:
0
发表于 2011-07-30 18:24 |显示全部楼层
慢慢来吧

论坛徽章:
0
发表于 2011-08-05 10:13 |显示全部楼层
make -C /lib/modules/`uname -r`/build M=`pwd`modules  
不知道 对你是否有帮助

论坛徽章:
0
发表于 2011-08-05 12:41 |显示全部楼层
一个简单的内核模块如下:hello_mod.c
1 #include <linux/init.h>
2 #include <linux/module.h>
3
4 static int __init hello_mod_init(void)
5 {
6     printk(KERN_ALERT "\nHello, Module!\n");
7     return 0;
8 }
9
10 static void __exit hello_mod_exit(void)
11 {
12     printk(KERN_ALERT "\nBye, Module!\n");
13 }
14
15 module_init(hello_mod_init);
16 module_exit(hello_mod_exit);
17
18 MODULE_LICENSE("Dual BSD/GPL");
1-2行是编写内核模块所必须的内核头文件;
4-8行是模块初始化部分的代码,在模块被插入的时候调用
10-13行是模块退出部分的代码,在模块被卸载时调用
15-16行分别通过两个内核的宏来指定函数的功能
第18行是告诉内核模块所采用的许可证。
下面是Linux内核模块驱动的典型Makefile如下图:
1         # Makefile2.6
2         ifneq ($(KERNELRELEASE),)
3         #kbuild syntax. dependency relationshsip of files and target modules are listed here.
4         obj-m := hello_mod.o
5         else
6         PWD  := $(shell pwd)
7         KVER = 2.6.27.8
8          KDIR := /home/xss/lpc3250/linux-2.6.27.8/
9         all:
10                $(MAKE) -C $(KDIR) M=$(PWD) modules
11
12        clean:
13                rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions
14        endif
第6行指定内核模块名,对于单文件模块,必须与C文件同名。
第7行指定所用的内核的版本。
第8行指定Linux内核源代码所在路径。
Makefile与内核模块文件在同一目录下,只需要在终端输入make命令即可编译得道内核模块文件(*.ko)。
编译得到内核模块以后,通过insmod命令可以将其插入到正在运行的内核中,相反,通过rmmod命令将已经插入内核的模块卸载。

前提是你Linux中要有编译好的内核源码,也就是KDIR := /home/xss/lpc3250/linux-2.6.27.8/
这个指定的地方。其他的不想说了,够详细了

论坛徽章:
0
发表于 2011-08-05 14:35 |显示全部楼层
谢谢 好咯

论坛徽章:
0
发表于 2011-08-09 17:09 |显示全部楼层
我想问下编译好的内核源码是指uImage?

论坛徽章:
0
发表于 2011-08-09 17:11 |显示全部楼层
不对,那是内核镜像文件
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP