【问题标题】:How to use/compile this file?如何使用/编译这个文件?
【发布时间】:2019-12-16 11:25:40
【问题描述】:

我收到了这个名为pMakefile 的示例文件,但我不确定如何执行它。将使用什么命令以及如何使用它?

我尝试使用 make 进行编译,它似乎与常规的 makefile 不同。我为此使用了 UNIX 环境。

wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o [gcc -o 
wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o]
aardvark.o aardvark.h aardvark.c [gcc -c aardvark.c]
aardvark.h aardvark1.txt aardvark2.txt [date | sed 's/\(.*\)/"\1"/g' | 
cat -s aardvark1.txt - aardvark2.txt > aardvark.h]
manatee.o manatee.h manatee.c [gcc -c manatee.c]
penguin.o penguin.h penguin.c [gcc -c penguin.c]
velociraptor.o velociraptor.h velociraptor.c [gcc -c velociraptor.c]
wombat.o aardvark.h manatee.h penguin.h velociraptor.h wombat.h wombat.c 
[gcc -c wombat.c]

只是想知道如何使用该文件。执行使用:

make -f pMakefile gives
pMakefile:1: *** Missing separator. Stop 

【问题讨论】:

  • 在我看来这不像是一个 makefile。
  • 使用反斜杠 (\) 转义换行符。
  • 绝对不是makefile。它不适用于make。你得问问给你的人应该用什么工具……我不认识那个语法。
  • 每一行应该代表一个规则
  • 没有足够的冒号或等号使其成为生成文件。方括号不是生成文件的正常部分。线条都乱七八糟的。它不是一个常规的 makefile。回到你的供应商那里,询问makefile上的“真正的交易”,或者解释如何使用它。我们无法提供信息 - 它无法识别为生成文件。

标签: c unix makefile


【解决方案1】:

提供的代码不构成有效的生成文件。我不确定应该使用什么实用程序,但它看起来像这种形式的行:

target prerequisite ... '[' recipe ']'

在这种情况下,相应的标准生成文件将是

wombat: aardvark.o manatee.o penguin.o velociraptor.o wombat.o
    gcc -o $@ aardvark.o manatee.o penguin.o velociraptor.o wombat.o

aardvark.o: aardvark.h aardvark.c
    gcc -c -o $@ aardvark.c

aardvark.h: aardvark1.txt aardvark2.txt
    date | sed 's/\(.*\)/"\1"/g' | cat -s aardvark1.txt - aardvark2.txt > $@

manatee.o: manatee.h manatee.c
    gcc -c -o $@ manatee.c

penguin.o: penguin.h penguin.c
    gcc -c -o $@ penguin.c

velociraptor.o: velociraptor.h velociraptor.c
    gcc -c -o $@ velociraptor.c

wombat.o: aardvark.h manatee.h penguin.h velociraptor.h wombat.h wombat.c
    gcc -c -o $@ wombat.c

【讨论】:

    【解决方案2】:

    这不是标准的 Makefile,但我想我知道如何将它转换为一个。在每一行中,第一个文件名是目标,后面的文件名是依赖项,括号中的文本是规则。

    例如前两行:

    wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o [gcc -o 
    wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o]
    

    将在 Makefile 中表示为:

    wombat: aardvark.o manatee.o penguin.o velociraptor.o wombat.o
        gcc -o wombat aardvark.o manatee.o penguin.o velociraptor.o wombat.o
    

    尽管如此,这仍然是一个写得很糟糕的 Makefile——它没有使用变量或通配符规则等基本功能,因此重复性很高。完全重写它真的会更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2013-10-23
      相关资源
      最近更新 更多