关于驱动makefile的学习心得
最近在学习驱动的编译和挂载,记录一下,防止以后忘了。
写好一个驱动后需要将源文件交叉编译为**.ko**文件,然后下载到开发板上,实现手动挂载驱动模块。这时候就需要一个Makefile文件来实现编译功能,以下代码段是我参考网上例子结合自己开发环境写的一个Makefile文件。
ifneq ($(KERNELRELEASE),)
obj-m:= channel.o
else
KDIR := /home/orangepi-build/kernel/orange-pi-5.4
PWD := $(shell pwd)
CROSS_COMPILE=arm-none-linux-gnueabihf-
CC =$(CROSS_COMPILE)gcc
all:
make -C $(KDIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
clean:
rm *.o *.ko *.mod.c *.order *.mod *.symvers
endif
简要注释:
1、KDIR 后面是自己的linux内核路径,也就是自己虚拟机里面下载linux内核的路径,我用的是香橙派的开发板,linux源码是在官网下载的。
2、CROSS_COMPILE 后面是自己所用的交叉编译工具,根据自己的开发环境选择自己的工具,下载交叉编译工具后需要在 /etc/profile 中添加自己所用工具的路径,然后在执行以下 source /etc/profile
指令更新一下路径。
3、关于交叉编译器,我用的香橙派在编译镜像的时候会生成一个toolchaains文件夹,里面有我所需要的工具。
4、以下路径就是我在 /etc/profile 最后一行添加的交叉编译器路径,可以根据自己的路径添加。
export PATH=$PATH:/home/orangepi-build/toolchains/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/