Linux 为什么我们可以在这里工作?

Linux 为什么我们可以在这里工作?,linux,makefile,Linux,Makefile,生成文件: KERNEL_DIR := /usr/src/linux-2.6.32.9 obj-m := try.o driver: try.c make -C $(KERNEL_DIR) SUBDIRS=`pwd` modules clean: rm -rf *.o *.ko *.mod.c 当我键入make时,make-C$(KERNEL_DIR)SUBDIRS=pwdmodules正在运行,就好像make driver正在运行一样,为什么?make在没有参数的

生成文件:

KERNEL_DIR := /usr/src/linux-2.6.32.9

obj-m := try.o

driver:     try.c
    make -C $(KERNEL_DIR) SUBDIRS=`pwd` modules
clean:
    rm -rf *.o *.ko *.mod.c

当我键入
make
时,
make-C$(KERNEL_DIR)SUBDIRS=
pwd
modules
正在运行,就好像
make driver
正在运行一样,为什么?

make
在没有参数的情况下从makefile运行第一件可能的事情
obj-m
KERNEL\u DIR
不是规则,它们是变量<代码>驱动程序是要遵循的第一条规则。

如果调用make时没有指定目标,make会选择makefile中的第一个目标作为目标。在这种情况下,它是
驱动程序
obj-m
KERNEL\u DIR
只是变量赋值,而不是目标。

但是在
driver
中没有
try.o
,如何?
obj-m
(和
KERNEL\u DIR
)不是目标,而是变量
driver
是第一个目标,因此由make执行,如果调用时没有给出具体的目标,则不是由
:=
指定的依赖项,而不是
?这里有点混乱@jho:不,
:=
都不是依赖项声明;只有最后一个是。第一个是变量赋值,类似于
=
;要了解差异,请参阅@assem:一个冒号(
)分隔目标及其依赖项。@assem:我不明白你的问题。你说“它不需要任何参数”是什么意思?这只是一个在目录
$(KERNEL_DIR)
中运行make的命令,将变量
SUBDIRS
设置为当前目录,并指示make构建目标
模块。目录
$(KERNEL\u DIR)
中应该有一个Makefile,它包含一个描述如何更新
模块的规则。您能谈谈
生成驱动程序的具体情况吗?