我在使用KBUILD选择性地从不同的目录构建模块时遇到了麻烦 . 我有2个内核目录Kernel / kernel-XXX

让驱动程序目录结构如下所示

----kernel
|   |
|   |-----drivers
|       |
|       |-----boom
|           |
|           |----virtual_driver.c
|           |----a.c
|           |----b.c
|           |----c.c
|
|---kernel-XXX
    |
    |-----drivers
        |
        |-----boom
            |
            |---virtual_driver_XXX.c

虚拟驱动程序需要a.c,b.c,c.c进行编译 . 我在kernel-XXX中有一个更新版本的virtual_driver_XXX.c,它还依赖于a.c,b.c,c.c

如何修改kernel / drivers / boom目录中的makefile以从kernel-XXX目录中获取virtual_directory_XXX.o . 这里的方法应该是什么 .

kernel / drivers / boom目录中的当前makefile如下所示 .

Makefile

obj-y += t.o

t-y   += a.o

t-y   += b.o

t-y   += c.o

t-y  += virtual_driver.o

obj-y += <...>.o

我想要类似的东西

Makefile

obj-y += t.o

t-y   += a.o

t-y   += b.o

t-y   += c.o

if (a give condition)

t-y  += virtual_driver_XXX.o

else

t-y  += virtual_driver.o

obj-y += <...>.o

问题是我在kernel-XXX / drivers / boom中没有Makefile,因为我不知道如何使用kernel / drivers / boom目录中的a.o / b.o / c.o构建virtual_driver_XXX .