#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传参的处理;