Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Makefile,奇怪的错误为;“没有目标”;当目标出现时_C_Makefile - Fatal编程技术网

C Makefile,奇怪的错误为;“没有目标”;当目标出现时

C Makefile,奇怪的错误为;“没有目标”;当目标出现时,c,makefile,C,Makefile,所以我有了makefile HEADERS = preferences.h distances.h OBJECTS = movie_recommender.o preferences.o distances.o default: movie_recommender %.o: %.c $(HEADERS) ; gcc -c $< -o $@ movie_recommender: $(OBJECTS) ; gcc $(OBJECTS) -o $@ clean:

所以我有了makefile

HEADERS = preferences.h distances.h
OBJECTS = movie_recommender.o preferences.o distances.o

default: movie_recommender

%.o: %.c $(HEADERS)
    ; gcc -c $< -o $@

movie_recommender: $(OBJECTS)
    ; gcc $(OBJECTS) -o $@

clean:
    ; -rm -f $(OBJECTS)
    ; -rm -f movie_recommender
我试着添加目标

movie_recommender.o: movie_recommender.c
    gcc -c movie_recommender.c
我收到另一个错误。谁能告诉我我做错了什么?
非常感谢

make程序只在当前目录中查找您的文件。当前目录中没有
movie\u recommender.c
文件,因此
make
看不到它,也找不到任何方法制作
movie\u recommender.o

解决方案是添加,使makefile知道源目录和头目录,您可以这样做。如果你加上

vpath %.c src
然后它将自动在
src
目录中查找
%.c
文件

类似地,
make
也找不到您的标题


GCC也找不到标题,它也不知道
make
vpath
,因此您需要将
-Iinclude
传递给GCC。

make程序只在当前目录中查找您的文件。当前目录中没有
movie\u recommender.c
文件,因此
make
看不到它,也找不到任何方法制作
movie\u recommender.o

解决方案是添加,使makefile知道源目录和头目录,您可以这样做。如果你加上

vpath %.c src
然后它将自动在
src
目录中查找
%.c
文件

类似地,
make
也找不到您的标题


GCC也找不到标题,它也不知道
make
vpath
,因此您需要将
-Iinclude
传递给GCC。

在makefile目录中
ls
给您什么?编辑:哦,我看到你的路径了。如果信息包含在问题中,而不是包含在链接图像中,则更容易。啊,是的,我不知道如何将路径包含在图像中:(问题是makefile和目录结构之间存在分歧(您可以在文本中描述)。最简单的解决方法是将行
vpath%.c src
添加到您的makefile中。
ls
在makefile的目录中为您提供了什么?编辑:哦,我看到了您的路径。如果问题中包含了信息,而不是链接图像中,则更容易。啊,是的,我不知道如何在图像中包含路径:(问题是您的makefile和目录结构(您可以在文本中描述)之间存在不一致。最简单的修复方法是将行
vpath%.c src
添加到您的makefile中。工作正常。非常感谢!工作正常。非常感谢!