Makefile错误-没有这样的文件或目录

Makefile错误-没有这样的文件或目录,makefile,Makefile,我正在尝试将一个新文件集成到我的程序编译中。我完全搞不懂“routed.o:”这句话。我的程序有一个名为“routed”的主文件和两个支持文件,其中包含主文件调用的函数。有人能帮我理解如何把它编译成一个程序吗?谢谢大家! 编辑:我想出来了。为了子孙后代,我已经把我那些“愚蠢”的台词注释掉,并用一些有用的东西来代替它们 CC = gcc CFLAGS = -c -g -Wall -Wextra DEPS = routed.h all: routed_LS %.o: %.c $(DEPS)

我正在尝试将一个新文件集成到我的程序编译中。我完全搞不懂“routed.o:”这句话。我的程序有一个名为“routed”的主文件和两个支持文件,其中包含主文件调用的函数。有人能帮我理解如何把它编译成一个程序吗?谢谢大家!

编辑:我想出来了。为了子孙后代,我已经把我那些“愚蠢”的台词注释掉,并用一些有用的东西来代替它们

CC = gcc
CFLAGS = -c -g -Wall -Wextra
DEPS = routed.h

all: routed_LS

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

helper_funcs.o: helper_funcs.c
    $(CC) -c helper_funcs.c -o helper_funcs.o

dijkstra.o: dijkstra.c
    $(CC) -c dijkstra.c -o dijkstra.o

# routed.o: routed.c helper_funcs.o dijkstra.o
#   $(CC) -c routed.c -o routed.o -o dijkstra.o

routed.o: routed.c
$(CC) -c routed.c

# routed: routed.o helper_funcs.o dijkstra.o
#   $(CC) -o routed routed.o helper_funcs.o dijkstra.o 

routed: routed.o dijkstra.o helper_funcs.o
$(CC) -o routed routed.o dijkstra.o helper_funcs.o  

clean:
    rm -f *.o
    rm -f routed
此命令:

$(CC) -c routed.c -o routed.o -o dijkstra.o

不会做你认为它会做的事。我不完全确定您在这里尝试了什么,但是编译器将输出文件的名称设置为“routed.o”,然后尽职地将其设置为“dijkstra.o”。该命令生成一个名为“dijkstra.o”的对象文件,仅此而已。
routed.o
规则实际上并不生成名为
routed.o
的文件,当链接器到达该对象文件时,它找不到该文件。

我真的不明白我在做什么,你可以清楚地看出。我解决这个问题的方法是进行以下更改:

# routed.o: routed.c helper_funcs.o dijkstra.o
#   $(CC) -c routed.c -o routed.o -o dijkstra.o

routed.o: routed.c
$(CC) -c routed.c

# routed: routed.o helper_funcs.o dijkstra.o
#   $(CC) -o routed routed.o helper_funcs.o dijkstra.o 

您的规则显示“$(CC)-c routed.c-o routed_LS.o…”,但您的输出显示“gcc-c routed.c-o routed.o…”。这两个你都确定吗?打字错误。很抱歉。
# routed.o: routed.c helper_funcs.o dijkstra.o
#   $(CC) -c routed.c -o routed.o -o dijkstra.o

routed.o: routed.c
$(CC) -c routed.c

# routed: routed.o helper_funcs.o dijkstra.o
#   $(CC) -o routed routed.o helper_funcs.o dijkstra.o