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 添加

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值