我有一个Makefile,它编译两个Linux内核模块(mod1.c和mod2.c)。
obj-m = mod1.o mod2.o
KDIR=/lib/modules/$(shell uname -r)/build/
PWD=$(shell pwd)
# build the modules
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
#cleanup
clean:
rm -rf *.ko *.o *.mod* .*.cmd modules.order Module.symvers .tmp_versions当我运行make时,这可以很好地构建两个内核模块,但是我希望能够指定构建哪个模块。例如,make mod1编译mod1.c,make mod2编译mod2.c。
我不确定的是如何处理obj-m。否则,指定要编译is well described online的程序。
发布于 2020-05-06 18:07:19
内核使用变量设置内核模块:
CROSS_COMPILE ?= /path/to/compiler/arm-linux-gnueabihf-
T1 ?= n
T2 ?= n
obj-$(T1) += test1.o
obj-$(T2) += test2.o
LINUX_SOURCE_DIR=/path/to/linux
all:
$(MAKE) -C $(LINUX_SOURCE_DIR) M=$(PWD) modules ARCH=arm
test1:
$(MAKE) T1=m
test2:
$(MAKE) T2=m
clean:
rm *o modules.order Module.symvers *mod.c您可以将其用作make T1=m或make test2。
https://stackoverflow.com/questions/61640644
复制相似问题