构建具有单独输出目录的树外Linux内核模块

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

我想构建一个树外内核模块,使输出目录与源目录分开?我该怎么做?我愿意走任何路线。我对内核构建系统所做的改动很小,我可以复制源文件(但是,如果我没有对源文件进行任何更改,我就不想重建,但是如果我复制,这是行不通的)源文件),并且我可以设置参数或其他参数。

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

许多人都面临这个问题,包括我在内。支持在单独的输出目录中构建外部模块。我修改了kbuild:

首先,在scripts/Makefile.buildscripts/Makefile.clean处修改src变量>

-src := $(obj)
+src := $(if $(KBUILD_EXTMOD_SRC),$(KBUILD_EXTMOD_SRC)$(patsubst $(KBUILD_EXTMOD)%,%,$(obj)),$(obj))

其次,修改scripts/Makefile.modpost

-src := $(obj)
+src := $(if $(KBUILD_EXTMOD_SRC),$(KBUILD_EXTMOD_SRC),$(obj))

 # Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS
-include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \
-             $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile)
+include $(if $(wildcard $(src)/Kbuild), \
+             $(src)/Kbuild, $(src)/Makefile)

然后构建外部模块,如下所示:

make -c  $(kernel_src) M=$(extmod_outpu_dir) KBUILD_EXTMOD_SRC=$(extmod_src_dir) modules
© www.soinside.com 2019 - 2024. All rights reserved.