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

时间:2019-02-28 10:22:58

标签: linux makefile kernel kernel-module

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

  • arch
  • 阻止
  • build-in.o
  • 证书
  • ...
  • .config
  • Makefile
  • Module.symvers
  • 源(到我的客户文件系统中本地源树的符号链接)

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

/ home / michael / Source / Linux / br_driver 是我的驱动程序目录。我试图按照以下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

1 个答案:

答案 0 :(得分:0)

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