一. 简介
本文继上一篇文章的学习,上一篇文章学习了字符设备驱动框架的初步编写。文章地址如下:
字符设备驱动框架的编写-CSDN博客
本文对上一篇编写的驱动模块初步框架进行编译。
二. 字符设备驱动模块的编译
上一篇文章,编写了字符设备驱动加载与卸载的框架代码,这里对代码进行编译。
编写 Makefile文件,Makefile 文件内容如下:
KERNELDIR := /home/wangtian/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_gaCURRENT_PATH := $(shell pwd)
obj-m := chrdevbase.obuild: kernel_moduleskernel_modules:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
第 1 行, KERNELDIR 表示开发板所使用的 Linux 内核源码目录,使用绝对路径,大家根 据自己的实际情况填写即可。
第 2 行, CURRENT_PATH 表示当前路径,直接通过运行 “ pwd ” 命令来获取当前所处路 径。
第 3 行, obj-m 表示将 chrdevbase.c 这个文件编译为 chrdevbase.ko 模块。
第 8 行,具体的编译命令,后面的 modules 表示编译模块, -C 表示将当前的工作目录切 换到指定目录中,也就是 KERNERLDIR 目录。 M 表示模块源码目录,“ make modules ” 命令 中加入 M=dir 以后程序会自动到指定的 dir 目录中读取模块的源码并将其编译为 .ko 文件。
Makefile 编写好以后,就可以输入“ make ” 命令编译驱动模块。操作如下:
从上面信息可以看出,进入我设置的 Linux内核源码(更改后的NXP官方Linux内核)目录中进行编译,编译完成后面又退出了 Linux内核源码路径。
查看是否生成 .ko文件:
可以看出,编译成功。生成了 chrdevbase.ko文件。