我在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
我不知道为什么我会收到错误,有没有人对我做错了什么有任何想法?
答案 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}}(针对第一个先决条件),以避免像这样的愚蠢错别字。