make: 没有什么可以为“所有人”做的。当我试图编译
make: Nothing to be done for `all'. when i tried to compile
这是我的 make 文件的代码
obj-m +=hello-1.o
all:
<tab>make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
<tab>make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
我有几个问题
- 我们保存的C语言文件扩展名为*.c,那么Makefile应该使用哪个扩展名呢?
- 当我在终端 "make" 中抛出命令时,它给我的错误是
make: 没有什么可以为 `all' 做的。
可能文件 all
已经存在。由于它不依赖于任何东西,并且不是 .PHONY
的依赖项,因此它的存在足以认为它已完成。
我建议添加
.PHONY: all clean
到 Makefile
结束。
您可以随意调用文件,只要是 Makefile
;-) 实际上,有几个非标准名称可以用作备用名称,或者您可以提供-f
标记为 make
的名称,但如果您可以避免使用它们,我不会推荐其中任何一个。
其他评论(你没有问过,但你还是得到了):
- 避免在命令中直接调用
make
;总是使用 $(MAKE)
。例如,当您使用 -n
时,这会有所帮助。
- 不要阻止您的 makefile 的用户为不同于现在 运行 的内核构建内核。为它创建一个变量(例如
KVER := $(shell uname -r)
或 KSRC := /lib/modules/$(shell uname -r)/build
以便它可以在命令行上被覆盖。
这是我的 make 文件的代码
obj-m +=hello-1.o
all:
<tab>make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
<tab>make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
我有几个问题
- 我们保存的C语言文件扩展名为*.c,那么Makefile应该使用哪个扩展名呢?
- 当我在终端 "make" 中抛出命令时,它给我的错误是 make: 没有什么可以为 `all' 做的。
可能文件 all
已经存在。由于它不依赖于任何东西,并且不是 .PHONY
的依赖项,因此它的存在足以认为它已完成。
我建议添加
.PHONY: all clean
到 Makefile
结束。
您可以随意调用文件,只要是 Makefile
;-) 实际上,有几个非标准名称可以用作备用名称,或者您可以提供-f
标记为 make
的名称,但如果您可以避免使用它们,我不会推荐其中任何一个。
其他评论(你没有问过,但你还是得到了):
- 避免在命令中直接调用
make
;总是使用$(MAKE)
。例如,当您使用-n
时,这会有所帮助。 - 不要阻止您的 makefile 的用户为不同于现在 运行 的内核构建内核。为它创建一个变量(例如
KVER := $(shell uname -r)
或KSRC := /lib/modules/$(shell uname -r)/build
以便它可以在命令行上被覆盖。