我的文件夹中有几个文件:module.c、uart.c和uart.h.
在模块.c文件中,我有#include "uart.h"
。
如何制作makefile?常规生成文件:
obj-m := module.o
KERNELDIR = /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
echo "bulding module for intel architecture:"
当我在上面的makefile上执行make时,它会给我一个错误,即它不知道uart.c中的函数,尽管我在代码中包含了
要从两个(或多个(.c文件构建Linux内核模块,module.c和uart.c:
ifneq ($(KERNELRELEASE),)
obj-m := mymodule.o
mymodule-objs := module.o uart.o
else
KERNELDIR ?= "/lib/modules/$(shell uname -r)/build"
all:
$(MAKE) -C "$(KERNELDIR)" M="$(CURDIR)" modules
install:
$(MAKE) -C "$(KERNELDIR)" M="$(CURDIR)" modules_install
clean:
$(MAKE) -C "$(KERNELDIR)" M="$(CURDIR)" clean
endif
上面将构建一个名为mymodule.ko的模块。对于由多个对象文件组成的内核模块(在这种情况下为module.o和uart.o(,构建的模块对象文件的名称(在这种情况下为mymodule.o