一. 简介
本文继上一篇文章的学习,上一篇文章学习了字符设备驱动框架的初步编写。文章地址如下:
字符设备驱动框架的编写-CSDN博客
本文对上一篇编写的驱动模块初步框架进行编译。
二. 字符设备驱动模块的编译
上一篇文章,编写了字符设备驱动加载与卸载的框架代码,这里对代码进行编译。
编写 Makefile文件,Makefile 文件内容如下:
KERNELDIR := /home/wangtian/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga
CURRENT_PATH := $(shell pwd)
obj-m := chrdevbase.o
build: kernel_modules
kernel_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文件。