2

我正在尝试创建一个 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使用该值?

4

2 回答 2

4

这个 makefile 有一个规则:

all:
    make -C $(KDIR) M= 'pwd' modules

英文:“进入目录$(KDIR)并执行Make(目标是modules)”。

因此,当使用此 makefile 调用 Make 时,它​​会使用另一个 makefile 调用 Make。

你应该从更简单的开始。如果您告诉我们您要做什么,我们可以提供帮助。

于 2013-01-16T05:18:45.970 回答
0

看起来这个文件可能有一个规则,但前提KERNELRELEASE是它是空的。 只有在不为空obj-m时才被定义KERNELRELEASE,在这种情况下不会真正做任何事情......我猜这将被内核使用,包括这个(在定义之后)在它自己的一个中,以防你实际构建它进入内核而不是作为动态加载的模块。Makefileobj-mMakefileKERNELRELEASE

于 2013-01-16T12:24:10.460 回答