gpt4 book ai didi

c makefile - 没有输入文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:28:07 25 4
gpt4 key购买 nike

所以这里是我的 makefile 代码:

    CC=gcc 
CFLAGS= -g -W -Wall -o
EXEC=program
all : $(EXEC)
program: apple.o cream.o cake.o program.o
$(CC) $(CFLAGS) program apple.o cream.o cake.o program.0

program.o: program.c apple.o cream.o cake.o
$(CC) $(CFLAGS) program.c

apple.o: apple.c apple.h
$(CC) $(CFLAGS) apple.c apple.h

cream.o: apple.o cream.c cream.h
$(CC) $(CFLAGS) cream.c cream.h

cake.o: cake.c cake.h cream.o apple.o
$(CC) $(CFLAGS) cake.c cake.h
clean:
-rm -rf *.o $(EXEC)

我遇到了一个错误:*gcc: 没有输入文件make: *[program.o] 错误 1***

只是想让你知道。

  • apple.c 有 -> #include "apple.h"
  • cream.c 有 -> #include "cream.h"和 #include "apple.h"
  • cake.c 有 -> #include "cake.h", #include "apple.h"& #include "cream.h"
  • program.c 有 -> #include "cake.h", #include "apple.h"& #include "cream.h"

我希望能够创建一个 makefile 来生成我的 exec“程序”。我读过我可以使用 de -I 标志,它会查看包含 header 的目录。但是当我在我的 CFLAGS 中添加 -I 时,情况变得更糟了

非常感谢。

最佳答案

CFLAGS= -g -W -Wall -o
:
program.o: program.c apple.o cream.o cake.o
$(CC) $(CFLAGS) program.c

问题(其中之一)就在那里。

由于 CFLAGS-o 结尾,输出文件的规范,命令最终为:

gcc -g -W -Wall -o program.c

换句话说,您将program.c 指定为输出 文件并且不提供输入 文件。

您需要使用以下内容指定输出文件:

program: program.c apple.o cream.o cake.o
$(CC) $(CFLAGS) program program.c apple.o cream.o cake.o

(尽管可能有更好的方法通过使用 make 提供的元变量来做到这一点)。

您似乎对编译过程也有些困惑。尽管您的规则是用于构建目标文件program.o,但您拥有的编译器选项将尝试生成最终的可执行文件(因为它们没有 -c).

关于c makefile - 没有输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com