linux驱动makefile解析

#ubuntu的内核源码树,如果要编译在ubuntu中安装的模块就打开这2个
#KERN_VER = $(shell uname -r)
#KERN_DIR = /lib/modules/$(KERN_VER)/build	

		
# 开发板的linux内核的源码树目录
KERN_DIR = /root/driver/kernel

obj-m	+= leds-s5pv210.o

all:
	make -C $(KERN_DIR) M=`pwd` modules 
	arm-linux-gcc app.c -o app

cp:
	cp *.ko /root/porting_x210/rootfs/rootfs/driver_test
	cp app /root/porting_x210/rootfs/rootfs/driver_test
	

.PHONY: clean	
clean:
	make -C $(KERN_DIR) M=`pwd` modules clean
	rm -rf app

重点有两个一个就是内核目录
KERN_DIR = /root/driver/kernel
内核源码要和加载驱动的内核一致,否则可能报错;
装载驱动的内核源码目录
编译
all:
make -C $(KERN_DIR) M=pwd modules
arm-linux-gcc app.c -o app
make -C:这是Makefile的命令,表示跳转到-C后指定的目录执行该目录下的Makefile。其实就是去执行内核的顶层Makefile,通过传参给顶层 Makefile编译成驱动;
M=pwd:Makefile在构造modules目标之前返回到模块源代码目录;
modules:标明是要编译成驱动文件,具体要去看内核顶层Makefile中对modules传参的处理;

你可能感兴趣的:(linux,运维,服务器)