【问题标题】:Make file Error on solaris9 machine: Dont know how to make target在 solaris 9 机器上制作文件错误:不知道如何制作目标
【发布时间】:2013-10-21 23:34:19
【问题描述】:
#compile time flags
CFLAGS=-Wall -Werror
CC=gcc
all:    prog-1-gcc prog-2-gcc prog-3-gcc prog-4-gcc prog-5-gcc prog-6-gcc \
        prog-7-gcc prog-8-gcc prog-9-gcc prog-10-gcc prog-11-gcc prog-12-gcc \        
        prog-13-gcc prog-14-gcc prog-15-gcc prog-16-gcc prog-17-gcc prog-18-gcc \        
        prog-19-gcc prog-20-gcc prog-21-gcc
all-gcc:    all
run:    run-1-gcc run-2-gcc run-3-gcc run-4-gcc run-5-gcc run-6-gcc \
        run-7-gcc run-8-gcc run-9-gcc run-10-gcc run-11-gcc \
        run-12-gcc run-13-gcc run-14-gcc run-15-gcc run-16-gcc \
        run-17-gcc run-18-gcc run-19-gcc run-20-gcc run-21-gcc
run-gcc:    run
prog-%-gcc: prog-%.c
    $(CC) $(CFLAGS) $< -o prog-$*.out
run-%-gcc:  prog-%.out
    -./prog-$*.out
make clean:
    rm -f all *.out

当我键入时,这个 makefile 在 solaris9 机器上给我这个错误

bash-2.05$ make prog-9-gcc
make: Fatal error: Don't know how to make target `prog-9-gcc'

包括 make clean 规则在内的所有规则都会发生这种情况。我会感谢任何人的意见,因为我已经被这个错误困扰了几天了,谢谢!我还应该提到这个 makefile 在 centos 机器上 100% 完美运行。

问题:在编译和运行我的 C 文件时,我可以对我的 make 文件或我在 solaris 上的输入行做些什么来使它工作。

Charlie Burns 在下面的 cmets 中回答了

【问题讨论】:

  • 代替“make prog-9-gcc:”试试“make prog-9-gcc”?
  • 对不起,这是一个错字,我没有输入“:”
  • 我很困惑为什么我的帖子得到了 2 票反对。我做错什么了吗?我以为我遵守了所有发帖规则,对不起,我是新来的。

标签: c linux gcc makefile


【解决方案1】:

这条规则告诉 make 它可以从文件 prog-9.c 构建 prog-9-gcc。因此,如果 make 给出该错误,则意味着您的目录中没有文件 proc-9.c

prog-%-gcc: prog-%.c
        gcc $(CFLAGS) prog-$*.c -o prog-$*.out

这条规则的另一个问题是它告诉 make 它将构建一个文件 prog-%-gcc(对于 % 的某些值),但它在撒谎。它实际上构建了一个完全不同的文件prog-%.out。因此,每次运行 make 时,make 都会重建所有目标。该规则应为:

prog-%-gcc: prog-%.c
        gcc $(CFLAGS) $< -o $@

真的,您应该在规则中设置CC = gcc 并使用$(CC)

【讨论】:

  • 这里是在 centos 机器上运行良好的 makefile 的屏幕截图。 i.imgur.com/yyy826a.png 我非常感谢您的帮助和您提供的任何反馈。正如你所说,我对我的 makefile 进行了更改,但它仍然给了我致命的错误!以下屏幕截图是操作中的错误,您可以看到 prog-9.c 文件在目录中! i.imgur.com/woiHMzh.png
  • 嗯,有些东西显然不一样。运行ls -l prog-9.c(完全像那样输入)。也许 Solaris 上的那个有一些不可见的空白。或者权限不对。如果这看起来没问题,那么运行make -d proc-9-gcc 并查看调试输出,看看为什么make 决定它不能构建目标。会有很多输出,但你应该能够遵循它。最后,检查 Solaris 系统上的 GNU make 版本(运行 make --version)。也许这是一个非常旧的版本,已经修复了一些错误。
  • 您将不得不原谅我,因为我对这些东西很陌生,这是我在输入您建议的行后得到的:i.imgur.com/eqZuQSN.png
  • 看起来你的 make 不是 gmake 并且不支持某些语法。尝试使用“gmake”而不是“make”,看看是否有什么不同。
  • 这已经奏效了!如果我知道如何给你代表我会非常感谢你的帮助。
猜你喜欢
  • 2014-01-14
  • 1970-01-01
  • 2012-08-31
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多