【问题标题】:Makefile issue - No rule to make target 'gcc'Makefile问题 - 没有规则来制作目标'gcc'
【发布时间】:2014-10-23 03:08:02
【问题描述】:

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

sortfile.cfileio.c 都使用 fileio.h

这是我的生成文件:

  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.

【问题讨论】:

    标签: c makefile


    【解决方案1】:

    Makefile 的格式为:

    target: dependency1 dependency2
        rule (command to build)
    

    您将该命令列为依赖项集,因此make 想在sortfile.o 得到满足之前尝试构建gcc

    代替:

    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
    

    由于隐含规则 (see also),此简短的 Makefile 将在 GNU Make 中按预期工作。

    【讨论】:

    • 在先决条件列表的末尾和命令之前插入分号也可以(即sortfile: sortfile.o fileio.o ; $(CC) $(CFLAGS) -o sortfile sortfile.o fileio.o)。
    • 如果我们用完了回车,那真的很方便! ;)
    猜你喜欢
    • 2012-05-15
    • 2010-10-24
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多