我如何指定用Makefile编译两个内核模块中的哪一个?

问题描述 投票:0回答:1

我有一个Makefile可以编译两个Linux内核模块(mod1.cmod2.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.cmake mod2 编制 mod2.c.

我不确定的是如何处理。obj-m. 否则,指定要编译的程序 在网上有很好的描述.

c linux makefile kernel-module
1个回答
1
投票

内核使用变量来设置内核模块的开启和关闭。

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=mmake test2.

© www.soinside.com 2019 - 2024. All rights reserved.