c-当其中一个文件是Linux内核模块时,如何将多个文件编译在一起



我的文件夹中有几个文件:module.cuart.cuart.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.cuart.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.ouart.o(,构建的模块对象文件的名称(在这种情况下为mymodule.o

相关内容

  • 没有找到相关文章

最新更新