我正在尝试创建一个 helloworld 模块。我必须写一个如下的makefile。
ifneq ($(KERNELRELEASE), )
obj-m := hello.o
else
KDIR := /path/to/kernel/sources
all:
make -C $(KDIR) M= 'pwd' modules
endif
我知道这个makefile运行了两次。它如何通过只调用一次来运行两次?
这里何时obj-m
使用该值?
这个 makefile 有一个规则:
all:
make -C $(KDIR) M= 'pwd' modules
英文:“进入目录$(KDIR)
并执行Make(目标是modules
)”。
因此,当您使用此 makefile 调用 Make 时,它会使用另一个 makefile 调用 Make。
你应该从更简单的开始。如果您告诉我们您要做什么,我们可以提供帮助。
看起来这个文件可能有一个规则,但前提KERNELRELEASE
是它是空的。 只有在不为空obj-m
时才被定义KERNELRELEASE
,在这种情况下不会真正做任何事情......我猜这将被内核使用,包括这个(在定义之后)在它自己的一个中,以防你实际构建它进入内核而不是作为动态加载的模块。Makefile
obj-m
Makefile
KERNELRELEASE