Linux:编译生成内核模块(来自国嵌的视频教学)
內核模塊的代碼文件
文件 yyyy.c? (yyyy可以與模塊xxxx同名也可以不同名)
(類似模板的東西)?
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE???????????? //直接添加到內核時去掉,生成模塊時保留
#define MODULE
#endif
?#include <*.h>
...
MODULE_LICENSE("GPL"); //許可證申明,用來告知內核,該模塊帶有一個許可證
MODULE_AUTHOR("you name"); //作者申明(可選)
MODULE_DESCRIPTION("aaaa");//模塊描述(可選)
MODULE_VERSION("V1.0"); //模塊版本(可選)
MODULE_ALIAS("a bbbb module"); //模塊別名(可選)
static ?int ?__inti? xxxx_init(void)
{
}
static??void??__inti? xxxx_exit(void)
{
}
... // 其他函數
...
module_init(xxxx_init);
module_exit(xxxx_exit);
內核編譯的Makefile
Makefile?
(類似模板的東西)
ifneq ($(KERNELRELEASE),)
obj-m := xxxx.o
xxxx-objs := yyyy.o? (如有其它源文件繼續添加 zzzz.o? ...)(如yyyy = xxxx 且只有一個源文件,該行可去掉)
?else
KDIR := /lib/module/2.6.28.6/build
all:
???????? make -C $(KDIR ) M=$(PWD)? modules
clean:
???????? rm? -f? *.ko? *.o? *.mod.o? *.mod.c? *.symvers
endif
其中 /lib/module/2.6.28.6/build 為創建內核代碼樹所生成的目錄,創建內核代碼數: http://blog.csdn.net/leaglave_jyan/article/details/6652444
編輯好源文件和Makefile后,該目錄下運行 make 即可編譯生成 模塊 xxxx.ko 文件
使用 insmod? xxxx.ko 添加
?
?
總結
以上是生活随笔為你收集整理的Linux:编译生成内核模块(来自国嵌的视频教学)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ通信原理
- 下一篇: 惠普1139一体打印机如何联网打印_惠普