Makefile错误:没有这样的文件或目录,没有输入文件

时间:2014-04-17 18:33:06

标签: c makefile

我在makefile中遇到了一些问题:

CC=gcc                         # Compiler variable
CFLAGS=-Wall -m32    # Options passed to the compiler
DEPS =

# Generic Rule for .o files
%.o: %.c $(DEPS)
    $(CC) -o $@ $< $(CFLAGS)

program: source1.o
    $(CC) -o program source1.o

#program: source1.o source2.o
#   $(CC) -o source1.o source2.o

source1.o: source1.c
    $(CC)  -o source1 source1.c $(CFLAGS) 

#source2.o: source2.c
#   $(CC) -o source2 source2.c $(CFLAGS)

为了概括,我将文件名更改为“source1”和“program”之类的内容。 现在我正在尝试使用一个源代码来使用makefile。我希望在行中添加更多源代码,我将通过注释掉的代码实现。

当我在终端中运行“make”时会发生这种情况:

[terminal] (2)$ make
gcc                 -o source1 source1.c -Wall -m32     
gcc                -o program source1.o
gcc: source1.o: No such file or directory
gcc: no input files
make: *** [program] Error 1

我不知道为什么我会收到错误,有没有人对我做错了什么有任何想法?

1 个答案:

答案 0 :(得分:2)

下面:

source1.o: source1.c
        $(CC) -o source1 source1.c $(CFLAGS)

当您指的是source1时,您已将输出文件指定为source1.o。这应该是:

source1.o: source1.c
        $(CC) -c -o source1.o source1.c $(CFLAGS)

您可以$@使用$<(针对目标)和{{1}}(针对第一个先决条件),以避免像这样的愚蠢错别字。