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

标签 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以识别绝对路径,非常感谢。

最佳答案

我不知道如何让内核的 Makefile 识别绝对路径。

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

关于linux - 使内核模块 makefile 识别源的绝对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45204181/

相关文章:

linux - 运行 2 个命令后无法进入我自己的目录

c++ - sfml 编译错误 : NULL was not declared in this scope

linux - "ls -Rl * > file.dat"的 Windows 命令

linux - SSH 连接到远程服务器上的 GitHub

makefile - 如何在GNU make中获取makefile的父目录的基本名称?

带有 makefile 卷挂载的 docker

linux - 动态创建 proc 目录条目?

makefile - 生成文件中 -DHAVE_CONFIG_H 的含义

linux - 内核模块 : hrtimer_start "Unknown Symbol in Module"

linux - 编译内核模块时没有规则使target 'lib/sha256.c'错误