c makefile - 没有输入文件
c makefile - no input file
这里是我的 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"
我希望能够创建一个生成我的 exec 的 makefile 'program'。而且我已经读到我可以使用 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
指定为 output 文件并且不提供 input 文件。
您需要使用以下内容指定输出文件:
program: program.c apple.o cream.o cake.o
$(CC) $(CFLAGS) program program.c apple.o cream.o cake.o
(尽管使用 make
提供的元变量可能有更好的方法来做到这一点)。
您似乎也对编译过程有些困惑。尽管您的 规则 用于构建目标文件 program.o
,但您拥有的编译器选项将尝试生成最终的可执行文件(因为它们没有 -c
).
这里是我的 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"
我希望能够创建一个生成我的 exec 的 makefile 'program'。而且我已经读到我可以使用 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
指定为 output 文件并且不提供 input 文件。
您需要使用以下内容指定输出文件:
program: program.c apple.o cream.o cake.o
$(CC) $(CFLAGS) program program.c apple.o cream.o cake.o
(尽管使用 make
提供的元变量可能有更好的方法来做到这一点)。
您似乎也对编译过程有些困惑。尽管您的 规则 用于构建目标文件 program.o
,但您拥有的编译器选项将尝试生成最终的可执行文件(因为它们没有 -c
).