【问题标题】:Building an out-of-tree linux kernel module with separate output directory构建具有单独输出目录的树外 linux 内核模块
【发布时间】:2020-03-06 23:36:26
【问题描述】:

我想构建一个树外内核模块,输出目录与我的源目录分开?我该怎么做?我愿意走任何路线。我对内核构建系统的最小更改没问题,我对复制源文件没问题(但是,如果我没有对源文件进行任何更改,我不想重建,如果我复制这不起作用源文件正常),我可以设置参数或其他东西。

【问题讨论】:

  • make O=/path/to/output SUBDIRS=$PWD -C /path/to/kernel/build/sources modules 必须帮忙。
  • 这不适用于树外内核模块。

标签: makefile linux-kernel kernel-module


【解决方案1】:

很多人都面临这个问题,包括我。 支持在单独的输出目录构建外部模块。 我修改了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

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2018-11-25
    • 2019-07-22
    • 2014-12-15
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    相关资源
    最近更新 更多