怎样将驱动静态编译进内核?
rt假设我有个test.c(模块),怎讲将它直接编译进内核,就是在编译的时候增加选项选择
假设在drivers下增加了个test目录( drivers/test/test.c)
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int __init hello_init(void)
{
printk(KERN_INFO "Hello,World!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_INFO "GoodBye!\n");
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE("GPL");
单独模块编译的时候我会写Makefile,这个的Makefile怎么写?
然后编译内核时那个菜单怎样添加?
看了下kbuild里面的几个文件,还是没尝试成功。。。
thx
ps:我就想尝试下把它编译进内核的映像里 宋保华的书 linux驱动开发详解 写得挺清楚的,一看就知道,很简单。楼主去找本翻番 不仅要添加Makefile文件,还要添加Kconfig文件,在Kconfig文件中添加编译选项,可以参考linux内核设计与实现一书中关于模块的章节,比较详细。 对,LS的说的很对。 需要修改内核的config文件,添加上你这个驱动的配置选项。然后make menuconfig的时候,就可以根据你的配置决定这个模块是编进内核,还是编程模块。 谢谢楼上各位
我选了源码drivers目录下一个简单的Kconfig,照着修改了,基本搞定。
ps: linux内核设计与实现 这书中貌似没模块介绍阿 原帖由 cssjtuer 于 2009-7-30 13:52 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
谢谢楼上各位
我选了源码drivers目录下一个简单的Kconfig,照着修改了,基本搞定。
ps: linux内核设计与实现 这书中貌似没模块介绍阿
这本书中介绍内核的编译了,可能这个比较具体的修改应该没有讲到。之前看过这本书,现在记不起来是否有这个地方 现在有个问题,我编译进去了,然后可以启动新内核
问题是我怎样发现我的程序确实在内核映像里了呢? 能看到我的程序加载到内存什么位置了吗
下一步是修改我的test.c程序,提供一个功能让我验证?
这个test.c程序应该向哪方面修改? 给点建议。
thx 在test。c里面添加printk,再编译
回复 #8 garyv 的帖子
我的test.c 有printk函数 主要就是Kconfig和Makefile配置好就行了~[ 本帖最后由 superfight 于 2009-7-31 17:39 编辑 ]
页:
[1]