您的位置:首页 > 运维架构 > Linux

linux 系统 ko模块编译

2016-05-23 16:35 429 查看
今天整理以前笔记,发现曾经里面有一个Makefile文件。

仔细一看是以前实习做linux内核程序设计时候写的模块makefile。刚好我电脑也有linux系统,就拿来回顾一下。

写个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"

内核源文件

[cpp] view
plain copy

#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/2.6.31-14-generic/build

具体看自己机器的文件

[cpp] view
plain copy

obj-m:=my.o

mymodule-objs:=module

KDIR:=/lib/modules/2.6.31-14-generic/build

MAKE:=make

default:

$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:

$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: