如何编译内核ko
来源:互联网 发布:钣金展开软件下载 编辑:程序博客网 时间:2024/05/22 02:06
Makefile
obj-m:=kstack.oKDIR:=/lib/modules/$(shell uname -r)/buildPWD:=$(shell pwd)default: $(MAKE) -C $(KDIR) M=$(PWD) modulesclean: rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.order *symvers *Module.markers
第一次编内核ko,用这个makefile试了一下
关键代码解说
- obj-m := <模块名>.o
obj-m是kbuild makefile中用来做目标定义的,obj-m是指编译成模块,亦即生成ko文件。
obj-m:=kstack.o—->这里面kstack.o是需要变化的,通常而言和源代码的文件同名即可,比如我的c代码是kstack.c,所以这里就是kstack.o,编出来就是kstack.ko。
- <模块名>-objs := <目标文件>
但是有时候,ko是由kstack.o file1.o file2.o这样多个.o文件编译成kstack.ko模块,那需要:
obj-m := kstack.o
kstack-objs := file1.o file2.o kstack_main.o(注意,这里不要用kstack.o)
所以<模块名>-objs用在多.o文件编译的时候,这个变量是说明生成模块kstack.ko需要的目标文件。
- KDIR
KDIR:=/lib/modules/$(shell uname -r)/build
这是我们正在运行的操作系统内核编译目录。也就是编译模块需要的环境。
uname -r可以查看当前系统使用的内核版本以及子版本号。
- M=
指定我们源文件的位置
下面我们写一个程序来试一下,这个程序会在被加载时打印进程名。
源程序:kstack.c
#include <linux/init.h>#include <linux/module.h>#include <asm/thread_info.h>#include <linux/sched.h>static int test_init(void){ int i = 0; struct thread_info *p = NULL; struct task_struct *t = NULL; p = (struct thread_info *)((unsigned long)&i & ~0x1fff); t = p->task; printk("Process name is ---->%s\n",t->comm); return 0;}static void test_exit(void){ printk("---Remove---\n");}module_init(test_init);module_exit(test_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("WSK");
在源文件路径下执行make命令,我们得到了kstack.ko的文件
然后测试一下效果
我们可以看到,printk打印的关键字已经出现在dmesg的内核日志里了。
阅读全文
0 0
- 如何编译内核ko
- 如何编译内核中某一个ko模块(1)
- Andriod编译内核模块*.ko
- Andriod编译内核模块*.ko
- Andriod编译内核模块*.ko
- Andriod编译内核模块*.ko
- Linux内核编译 ko文件
- linux helloword 内核编译.ko菜鸟记录
- 如何将多个源文件编译为一个.ko
- 如何编译和加载.ko模块
- 如何将多个源文件编译为一个.ko
- 如何将多个源文件编译为一个.ko
- 模块编译KO文件Makefile 2.6内核通用
- 在Linux内核中单独编译KO文件
- 初学者编译Linux内核,最简单ko模块
- 在Linux内核中单独编译KO文件
- 编译内核模块 .ko文件缺少:mmzone.h bounds.h
- ubuntu下编译内核模块ko,并加载
- 生活
- 富文本编辑器的用法
- 从尾到头打印链表(栈)
- 剑指offer(十一)二进制中1的个数
- HDU 6005 Pandaland——dijkstra + 剪枝
- 如何编译内核ko
- http://blog.csdn.net/haozhoupan/article/details/51149896
- D002_Java变量和基本数据类型
- Windows下Anaconda环境安装Tensorflow
- Java获取本机ip地址
- 一个函数只做一件事
- HITS算法--从原理到实现
- leetcode448. Find All Numbers Disappeared in an Array
- NOIP2013Day2T1积木大赛解题报告