linux 系统 ko模块编译

https://blog.csdn.net/elfylin/article/details/5908265

https://blog.csdn.net/yangbingzhou/article/details/51177066     .c文件如何编译为ko的MAKEFILE文件编写

写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko

 

再加载一下insmod my.ko     dmesg|grep module 看到模块初始化时候的打印

卸载模块rmmod my.ko  dmesg|grep module  看模块卸载时候的打印

 

都是对的,看来以前学的东西还是记得了……再mark一下。

 

注意事项:

1、内核目录

2、Makefile中obj-m:=my.o 这个和源文件my.c要对应

3、mymodule-objs:=module 这个my也是和my.c对应的

如果源文件为your.c

这两句话就应该改为obj-m:=your.o

yourmodule-objs:=module

4、查看输出的时候 用dmesg输出信息太多,可以用grep过滤一下

dmesg | grep "keywords"

 

内核源文件

#include <linux/init.h>  
#include <linux/kernel.h>  
#include <linux/module.h>  
static int funcIn(void)  
{  
    printk("in module");  
    return 0;  
}  
static void funcOut(void)  
{  
    printk("out module");  
    return;  
}  
module_init(funcIn);  
module_exit(funcOut);  
MODULE_LICENSE("GPL");  
MODULE_AUTHOR("elfy");  

Makefile 文件

我linux内核目录为/lib/modules/3.8.4/build

具体看自己机器的文件

obj-m:=my.o  
mymodule-objs:=module   # 可以不用
KDIR:=/lib/modules/$(shell uname -r)/build 
MAKE:=make  
default:  
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules  
    # rm -rf modules.order Module.symvers .*.cmd *.o *.mod.c .tmp_versions *.unsigned
clean:  
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean  
    # rm -rf modules.order Module.symvers .*.cmd *.o *.mod.c *.ko .tmp_versions *.unsigned

# 特别注意,需要tab来缩格

查看:

insmod my.ko
mesg|grep module
rmmod my
mesg|grep module
dmesg|tail -100
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值