我有下面的makefile,当输入make时,我得到了以下输出。为什么gcc在这种情况下会被叫来?
nasm -felf ./source/multiboot.s
gcc multiboot.o -o multiboot
gcc: error: multiboot.o: No such file or directory
gcc: fatal error: no input files
compilation terminated.
make: *** [multiboot] Error 4makefile:
CC=gcc
ASM=nasm
ASMFLAG=-felf
SOURCE=./source/
all: multiboot
multiboot.o: $(SOURCE)multiboot.s
$(ASM) $(ASMFLAG) $(SOURCE)multiboot.s发布于 2014-01-21 09:34:08
"all“命令依赖于"multiboot",但是没有明确的规则来定义如何生成"multiboot”。在这种情况下,使用预定义的规则来理解,如果存在"$target.o“目标,则可以通过运行链接器(在本例中为GCC)从"$target.o”构造"$target“。
在这种情况下,问题似乎是,您对"multiboot.o“命令的指令实际上并没有将文件"multiboot.o”作为输出。试着简单地做:
multiboot.o: multiboot.s(也就是说,不指定要运行的命令)。通过类似的机制,只要声明这个依赖项,就会产生一个隐式规则/命令来创建来自"multiboot.s“的"multiboot.o”输出。
https://stackoverflow.com/questions/21253978
复制相似问题