使内核模块makefile识别源的绝对路径?

时间:2017-07-20 02:40:58

标签: linux makefile kernel-module

我正在编写内核模块来为项目进行单元测试。 由于我需要在项目中包含源文件,我希望对这些文件使用绝对路径。 这将使我的Makefile像这样

foo-objs := dir1/src1.o dir1/src2.o
foo-objs += dir2/src3.o src4.o
foo-objs := $(addprefix $(PROJECT_ROOT),$(foo-objs))
...
all:
$(MAKE) -C /lib/modules/"$(shell uname -r)"/build M=$(PWD)

$(PROJECT_ROOT)是一个环境变量,记录项目根目录的绝对路径

通过这种方式,我相信可以更清晰,更容易地维护许多单元测试。

但是当我做make时,内核Makefile尝试编译$(PWD)/ $(PROJECT_ROOT)/src1.o,这当然不存在。它似乎将所有目标文件视为相对路径

因此,我想知道如果有一种方法让模块的内核Makefile识别绝对路径,非常感谢。

1 个答案:

答案 0 :(得分:0)

我知道无法让内核的Makefile识别绝对路径。

在我的项目中,我将绝对路径转换为相对路径。使用CMake进行这种转换很简单,但我不确定如何在简单的Make中执行此操作。您可以尝试将shell用于此目的,请参阅this question