我使用SDL2和nasm给了用C编写的程序。我对makefile有疑问:" ***也不制定目标' ../ home / amellana / Desktop / project / main.c',需要' main.o' ;" 有人知道我的makefile中要改变什么吗?
CC=gcc
CFLAGS=-Wall -Wextra
ASM=nasm
AFLAGS=-f elf64
all: myfunc mytest
main.o: ../home/amellana/Desktop/project/main.c
$(CC) $(CFLAGS) -c ../home/amellana/Desktop/project/main.c
mytest.o: ../home/amellana/Desktop/project/mytest.c
$(CC) $(CFLAGS) -c ../home/amellana/Desktop/project/mytest.c
program.o: program.nasm
$(ASM) $(AFLAGS) program.nasm
myfunc: main.o myfunc.o
$(CC) $(CFLAGS) main.o program.o -lSDL2 -o myfunc
mytest: mytest.o program.o
$(CC) $(CFLAGS) mytest.o program.o -o mytest
clean:
rm -f *.o
rm -f myfunc
rm -f mytest
答案 0 :(得分:3)
Makefile
规则的一般语法是:
<target>: <dependencies>
<recipe>
在你的情况下,这部分:
main.o: ../home/amellana/Desktop/ARKO/main.c
$(CC) $(CFLAGS) -c ../home/amellana/Desktop/project/main.c
表示为了创建目标main.o
,必须首先构建依赖项../home/amellana/Desktop/ARKO/main.c
。该文件不存在,并且没有为此类目标定义规则。因此,依赖失败。
您可能拼错了文件名,或路径不正确。