Makefile会执行3遍
第一次时KERNELRELEASE为空,所以先执行
KDIR,PWD的赋值 *** 作
$(shell uname -r)表示执行shell uname -r 相当于执行shell脚本uname -r
shell pwd 相当于 pwd
all:表示指令标竖橘枯签,上图中一共有伍蠢两个指令标签all和clean。
注意的是标签指令后面紧余洞紧跟着TAB键,这是Makefile的规则
通过“M=”在Makefile中搜索
-C 后面跟path to kernel src 其中/lib/modules/5.4.0-87-generic/build 表示内核源程序
使用$(info "")打印LOG
# kernel modules compiler --- Makefileobj-m := hello.o
# #set kernel path to our own kernel src path
KERNELDIR ?= /usr/src/kernels/2.6.18-53.el5-i686
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
rm -rf *.o *.ko *.mod.c *.symvers
需要有内核源码的目录。你可能没有指定对
KERNELDIR ?= /usr/src/kernels/2.6.18-53.el5-i686
编译内核模块需要内念码核源码,这个路径困高禅指定的就是内核源码路径。
你先下载一下内核源码解压到/usr/src/kernels 再试试汪尘。
就这两句么??简单说一下我的认识败败:
上面的一句是个赋值 *** 作 ,以后出现dm365_facedetect_driver-objs 的搭搜位置会被替换为dm365_facedetect.o
下面的一句是个添加 *** 作 ,在obj-$(CONFIG_DM365_FACEDETECT) 变量中添加 上
dm365_facedetect_hw.o dm365_facedetect.o
关于驱动的makefile :
举个最简单例子,
编写驱动知枯历的makefile关键要有 obj-m := xxxx.o (只有这一句就可以)
make 的时候如下
make -C /源码目录 M='pwd' modules
这样就会在当前目录生成.ko文件
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)