我正在编写内核模块来为一个项目进行单元测试。
由于我需要在项目中包含源文件,我希望使用这些文件的绝对路径。
会让我的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
时,内核MaFag文件尝试编译$(pWd)/$(PurraseOrthRoad)/SRC1.O,这当然是不存在的。它似乎将所有对象文件视为相对路径。因此,我想知道是否有办法使内核Makefile用于模块识别绝对路径,非常感谢。
最佳答案
我不知道如何使内核的makefile识别绝对路径。
在我的项目中,我将绝对路径转换为相对路径。这种转换对于CMake来说很简单,但是我不确定如何在普通的Make中实现。您可以尝试将shell用于此目的,请参见this question。
关于linux - 使内核模块makefile识别源的绝对路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45204181/