Make/build 不同子目录中的多个内核模块
Make/build multiple kernel modules in different sub directories
我想通过执行一个 Makefile 来制作多个内核模块。
我有以下目录和文件:
- 顶级目录:
- subdir0:
- module0.c
- 生成文件
- 子目录 1:
- module1.c
- 生成文件
- 子目录 2:
- module2.c
- 生成文件
- Makefile(我要执行这个)
我只想执行顶层目录中的Makefile,应该执行所有子目录的Makefile。我想为每个子目录获取一个内核模块。
这是我当前的设置,但它不起作用。如果我在子目录中执行 make,它会构建正确的 *.ko 文件。但是,如果我执行顶级 Makefile,它只会生成 Module.symvers 和 modules.order,并且输出看起来像每个 Makefile 都会被执行,但在子目录中没有创建任何内容。
我的顶级 Makefile 包含以下内容:
TARGETS := all clean
SUBDIRS := subdir0 subdir1 subdir2
.PHONY: $(TARGETS) $(SUBDIRS)
$(TARGETS): $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
我的子目录 Makefiles 有以下代码:
obj-m += module0.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
如果有人能帮助我,我会很高兴。
谢谢,
米哈
正如@0andriy 所说,我必须使用类似于子目录 Makefiles 的 Makefile。但是我没有添加 obj-m 条目,而是将所有子目录添加到 obj-y。
我想通过执行一个 Makefile 来制作多个内核模块。
我有以下目录和文件:
- 顶级目录:
- subdir0:
- module0.c
- 生成文件
- 子目录 1:
- module1.c
- 生成文件
- 子目录 2:
- module2.c
- 生成文件
- Makefile(我要执行这个)
- subdir0:
我只想执行顶层目录中的Makefile,应该执行所有子目录的Makefile。我想为每个子目录获取一个内核模块。
这是我当前的设置,但它不起作用。如果我在子目录中执行 make,它会构建正确的 *.ko 文件。但是,如果我执行顶级 Makefile,它只会生成 Module.symvers 和 modules.order,并且输出看起来像每个 Makefile 都会被执行,但在子目录中没有创建任何内容。
我的顶级 Makefile 包含以下内容:
TARGETS := all clean
SUBDIRS := subdir0 subdir1 subdir2
.PHONY: $(TARGETS) $(SUBDIRS)
$(TARGETS): $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
我的子目录 Makefiles 有以下代码:
obj-m += module0.o
all:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
如果有人能帮助我,我会很高兴。
谢谢, 米哈
正如@0andriy 所说,我必须使用类似于子目录 Makefiles 的 Makefile。但是我没有添加 obj-m 条目,而是将所有子目录添加到 obj-y。