在 Ubuntu 上开发驱动通常并不需要下载内核的源码(不需要改内核源码的情况下),下载内核头文件就可以了。下载的头文件中自带内核的 Makefile 文件。

查询系统对应的内核头文件包:

dpkg-query -s linux-headers-$(uname -r)

安装:

sudo apt-get install linux-headers-$(uname -r)

内核头文件会被安装在 /usr/src

驱动的 Makefile 简例:

obj-m := helloworld.o

KDIR := /usr/src/linux-headers-4.15.0-36-generic

PWD := $(shell pwd)

all: modules

modules:
	$(MAKE) -C $(KDIR) M=$(PWD) modules

clean:
	rm -rf *.o *~ core .depend *.symvers .*.cmd *.ko *.mod.c .tmp_versions $(TARGET)