Makefile问题 - 没有规则来制作目标'gcc'

时间:2014-10-23 03:08:03

标签: c makefile

我刚刚开始学习制作,我遇到了一些麻烦。我想创建一个名为sortfile的可执行文件。以下是相关文件:sortfile.c fileio.c fileio.h

sortfile.cfileio.c都使用fileio.h

这是我的makefile:

  1 CC = gcc                                                                                                                                                                                                                                  
  2 CFLAGS = -g -Wall                                                                                                                                                                                                                         
  3                                                                                                                                                                                                                                           
  4 default: sortfile                                                                                                                                                                                                                         
  5                                                                                                                                                                                                                                           
  6 sortfile: sortfile.o fileio.o $(CC) $(CFLAGS) -o sortfile sortfile.o fileio.o                                                                                                                                                             
  7                                                                                                                                                                                                                                           
  8 sortfile.o: sortfile.c fileio.h $(CC) $(CFLAGS) -c sortfile.c                                                                                                                                                                             
  9                                                                                                                                                                                                                                           
 10 fileio.o: fileio.c fileio.h $(CC) $(CFLAGS) -c fileio.c                                                                                                                                                                                   
 11                                                                                                                                                                                                                                           
 12 clean:                                                                                                                                                                                                                                    
 13         $(RM) sortfile *.o*~  

我收到以下错误:

make: *** No rule to make target `gcc', needed by `sortfile.o'.  Stop.

1 个答案:

答案 0 :(得分:3)

Makefile的格式为:

target: dependency1 dependency2
    rule (command to build)

您将该命令列为依赖项集,因此make想要在gcc满足sortfile.o之前尝试构建sortfile.o: sortfile.c fileio.h $(CC) $(CFLAGS) -c sortfile.c

而不是:

sortfile.o: sortfile.c fileio.h
    $(CC) $(CFLAGS) -c sortfile.c

你需要:

CFLAGS+=-g -Wall
all: sortfile
sortfile: sortfile.o fileio.o

请注意,通常你真正想要的只是更简单的事情:

Makefile

由于隐式规则(see also),此简要{{1}}将与GNU Make一起按预期工作。