我正在编写内核模块来对项目进行单元测试。 由于我需要在项目中包含源文件,我希望对这些文件使用绝对路径。 这将使我的 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以识别绝对路径,非常感谢。
最佳答案
我不知道如何让内核的 Makefile 识别绝对路径。
在我的项目中,我已将绝对路径转换为相对路径。这种转换使用 CMake 很简单,但我不确定如何在普通 Make 中执行此操作。您可以尝试为此目的使用 shell,请参阅 this question .
关于linux - 使内核模块 makefile 识别源的绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204181/