如何使用预构建的内核输出目录构建Linux内核模块?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用预构建的内核输出目录构建Linux内核模块?相关的知识,希望对你有一定的参考价值。

我的客户发给我预建的内核输出目录(他们无法向我们发布内核源代码树)。此输出目录如下(在/ home / michael / Clients / android_p_Hzh / kernel / kernel /下):

  • 集结in.o
  • 一些
  • ...
  • 的.config
  • Makefile文件
  • Module.symvers
  • source(符号链接到客户文件系统中的本地源树)

是否可以使用此目录构建我的外部模块?

/ home / michael / Source / Linux / br_driver是我的驱动程序目录。我试图在这个目录下构建我的驱动程序,如下面的make命令:

make CROSS_COMPILE = x86_64-poky-linux--C / home / michael / Clients / android_p_Hzh / kernel / kernel / M = pwd $ 1

它失败,输出低于:

*** No rule to make target '/home/michael/Source/Linux/br_driver/common.o' needed by ...

br_driver下的Makefile如下所示:

brt-objs := $(BRTOFILES)
obj-$(DRIVER_TYPE)   += brt.o

all:
    @echo "$(MAKE) --no-print-directory -C $(KDIR) SUBDIRS=$(CURDIR) modules"
    @$(MAKE) --no-print-directory -C $(KDIR) SUBDIRS=$(CURDIR) modules

clean:
    rm -rf *.o *.ko *.mod.c *~ .*.cmd *.o.cmd .*.o.cmd 
    Module.symvers modules.order .tmp_versions modules.builtin

install:
    @$(MAKE) --no-print-directory -C $(KDIR) 
        SUBDIRS=$(CURDIR) modules_install
答案

我已经解决了这个问题。我唯一需要的是.config和Modules.symvers。关键操作是make oldconfig和modules_prepare。

以上是关于如何使用预构建的内核输出目录构建Linux内核模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何理解 Linux 内核模块的“构建单独的文件”?

将内核模块构建到特定目录中

转载你知道 Linux 内核是如何构建的吗?

Linux内核构建选项之文件系统

我应该如何为 linux 内核模块构建设置额外的包含路径?

xmake v2.6.2 发布,新增 Linux 内核驱动模块构建支持