免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1441 | 回复: 0
打印 上一主题 下一主题

编译内核模块的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-30 11:31 |只看该作者 |倒序浏览
大家好,我知道内核模块的编译可以分为两种,一种在内核源码树内编译,另一种在内核源码树外编译。
1、在内核源码树内编译主要是修改Kconfig和Makefile
(1)比如有个hello.c模块源代码,我只要把它放到内核源码树的drivers/char/目录下,
修改drivers/char/目录下的Kconfig ,
添加如下语句
config HELLO_MODULE
     tristate "modules device support"
     default y
     help
     Say Y here,the modules will be build in kernel.
     Say M here,the modules willbe build to modules.
     Say N here,there will be nothing to be do.
让它在make menuconfig的时候有选择项
然后修改/drivers/char/目录下的Makefile
添加一条语句 obj-$(CONFIG_HELLO_MODULE)+=hello.o
就可以了。
(2)如果把hello.c放在hello目录下,并把hello目录放到drivers/char/目录下
那么drivers/char/ 目录下面的Makefile就应该添加这样的语句
obj-y+=hello/
在drivers/char/hello/目录下添加Makefile如下
obj-y+=hello.o
2、在内核源码树外编译内核模块
在hello.c所在的文件夹里
$vim Makefile
obj-m=hello.o
all:
       $(MAKE) -C $(KER_DIR) M=$(shell pwd) modules
如果hello.c是放在子目录hello里面的
则主目录里的Makefile应这样写
obj-m=hello.o
all:
       $(MAKE) -C $(KER_DIR) M=$(shell pwd)/hello/ modules

现在有个问题啊,我想在子目录写个Makefile,能像内核源码树里的Makefile一样能递归调用,
子目录里的Makefile和主目录里的Makefile都应该怎么写?
我在子目录里写Makefile obj-y+=hello.o
我在主目录里的Makefile里添加
obj-m=test.o
test-y+=hello/ 是没有效果的 (同时子目录的Makefile添加了obj-y+=hello.o)

那么在内核源码树外编译内核模块如何写主目录和子目录的Makefile,让它们像在内核源码树里一样递归调用呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP