如何编译内核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的内核日志里了。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 养的花叶子发黄怎么办 桅子花叶子发黄怎么办 膨珊瑚变皱了怎么办 狗狗的脚断了怎么办 拔倒刺手指肿了怎么办 多肉发芽徒长了怎么办 黄丽又大又肥怎么办 小叶紫檀盘坏了怎么办 多肉植物烂根怎么办 檀木手串开裂了怎么办 手串越来越黑了怎么办 绿萝叶子尖发黄怎么办 绿萝叶子发黄有黑斑怎么办 绿萝叶子尖干枯怎么办 养的花叶子干了怎么办 云株花叶子发黄怎么办 驱蚊草叶子发黄怎么办 多肉叶子有黑点怎么办 多肉植物干瘪了怎么办 多肉叶片有黑点怎么办 多肉叶片有黑斑怎么办 多肉表面有黑点怎么办 杉果游戏买了后怎么办 盆景叶子上的灰怎么办 福建茶盆景掉叶怎么办 被普通蜘蛛咬了怎么办 被小蜘蛛咬了怎么办 被一般蜘蛛咬了怎么办 联通4g流量超出怎么办 腿上的肥胖纹怎么办除 金属眼镜腿歪了怎么办 炸东西油往外溢怎么办 油反复使用起沫怎么办 炸东西的油黑了怎么办 板栗放久了干了怎么办 三四个月的宝宝拉肚子怎么办 四个月的孩子拉肚子怎么办 4个月孩子拉肚子怎么办 三阳的房子很热怎么办 买了缺角的房子怎么办 多肉摇钱树焉了怎么办