我正在尝试将一个新文件集成到我的程序编译中。我完全搞不懂"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以下是终端输出:
rm -f *.o
rm -f routed
gcc -c helper_funcs.c -o helper_funcs.o
gcc -c dijkstra.c -o dijkstra.o
gcc -c routed.c -o routed.o -o dijkstra.o
gcc -o routed routed.o helper_funcs.o dijkstra.o
i686-apple-darwin11-llvm-gcc-4.2: routed.o: No such file or directory
make: *** [routed] Error 1发布于 2013-11-12 11:29:03
此命令:
$(CC) -c routed.c -o routed.o -o dijkstra.o并不是你想的那样。我不完全确定您在这里尝试的是什么,但是编译器将输出文件的名称设置为"routed.o",然后尽职尽责地将其设置为"dijkstra.o“。该命令生成一个名为"dijkstra.o“的对象文件,仅此而已。routed.o规则实际上不会生成一个名为routed.o的文件,并且当链接器到达该目标文件时,它无法找到它。
发布于 2013-11-12 15:32:30
我真的不明白我在做什么,你可以清楚地看到。我修复这个问题的方法是进行以下更改:
# 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 https://stackoverflow.com/questions/19920289
复制相似问题