每次编译完驱动后,总是要将一些.ko文件及其测试的app复制到我们的跟文件系统中去,一直调试,一直cp,cp,烦的一批,下面提供一个Makefile
- make //编译项目
- make file //在存放.ko文件目录中创建对应项目的目录
- make install //将*.ko及其应用测试文件移动到根文件中
- make clean //删除make出来的文件
Makefile
# 1. 使用不同的开发板内核时, 一定要修改KERN_DIR # 2. KERN_DIR中的内核要事先配置、编译, 为了能编译内核, 要先设置下列环境变量: # 2.1 ARCH, 比如: export ARCH=arm64 # 2.2 CROSS_COMPILE, 比如: export CROSS_COMPILE=aarch64-linux-gnu- # 2.3 PATH, 比如: export PATH=$PATH:/home/book/100ask_roc-rk3399-pc/ToolChain-6.3.1/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin # 注意: 不同的开发板不同的编译器上述3个环境变量不一定相同, # 请参考各开发板的高级用户使用手册 # ROOTFS_DIR 根文件系统中存放 *.ko文件所在目录 # PROJECT_NAME 在存放.ko文件目录中创建对应项目的目录 # DRIVER_NAME 项目中需要编译出.ko来的驱动 # APP_NAME 项目中的应用测试文件 #make 编译项目 #make file 在存放.ko文件目录中创建对应项目的目录 #make install 将*.ko及其应用测试文件移动到根文件中 KERN_DIR = /home/alientek/linux/IMX6ULL/linux/temp/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek ROOTFS_DIR = /home/alientek/linux/nfs/rootfs/experiment #项目名字 PROJECT_NAME = chr_dev #各驱动名字,ko DRIVER_NAME1 = chr_dev DRIVER_NAME2 = #app名字 APP_NAME = chr_test all: make -C $(KERN_DIR) M=`pwd` modules $(CROSS_COMPILE)arm-linux-gnueabihf-gcc -o $(APP_NAME) $(APP_NAME).c clean: make -C $(KERN_DIR) M=`pwd` modules clean rm -rf modules.order rm -f $(APP_NAME) file: mkdir $(ROOTFS_DIR)/$(PROJECT_NAME) install: cp *.ko $(ROOTFS_DIR)/$(PROJECT_NAME) cp $(APP_NAME) $(ROOTFS_DIR)/$(PROJECT_NAME) # 参考内核源码drivers/char/ipmi/Makefile # 要想把a.c, b.c编译成ab.ko, 可以这样指定: # ab-y := a.o b.o # obj-m += ab.o obj-m += $(DRIVER_NAME1).o
应用(亲测可用)
如果已经创建了对应项目的目录就不需要·make file了