设为首页 加入收藏

TOP

加载Linux单体内核的笔记
2014-11-24 03:29:33 来源: 作者: 【 】 浏览:0
Tags:加载 Linux 单体 内核 笔记

“Hello world”是一个示例模块(module),文件名是hello.c:


#include
#include


MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk("hello,kernel\n");
return 0;



}


static void hello_exit(void)
{
printk("byebye\n");
return;
}



module_init(hello_init);
module_exit(hello_exit);


它的运行必须配合Makefile,其内容如下:
ifeq ($(KERNELRELEASE),)
KERNELDIR =/usr/src/kernels/2.6.18-8.el5-i686 #(内核所在的路径,这一句的意思是若KERNELDIR未定义,则定义为后面的路径)


PWD:= $(shell pwd) #(在Shell里运行pwd,讲得到的当前路径赋给变量PWD)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf modules.* *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module*
.PHONY:modules modules_install clean
else
obj-m := hello.o #(加载模块的名称,如这里的hello.c文件,此时就为hello.o)
endif


编译成功后,用insmod程序将模块动态链接到正在运行的内核中,也可以通过rmmod程序一处链接,modinfo程序查看编译后的模块信息,格式是:modinfo 模块名,最后用dmesg查看运行结果。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux开发 - 02 - 文件和目录 下一篇Ubuntu下编译Linux内核2.6.36-rc4

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)