gpt4 book ai didi

c - makefile 编译不正确

转载 作者:太空宇宙 更新时间:2023-11-04 06:31:27 24 4
gpt4 key购买 nike

我有一个编译不正确的 make 文件,我不知道为什么。这是我的文件:

comp = gcc
comp_flags = -g -Wall
comp_libs = -lm
#comp = cc

lab6 : graph_support.o lab6.o
$(comp) $(comp_flags) graph_support.o lab6.o -o lab6 $(comp_libs)

graph.o : graph_support.c graph.h
$(comp) $(comp_flags) -c graph_support.c

lab6.o : lab6.c graph.h
$(comp) $(comp_flags) -c lab6.c

clean :
rm -f *.o lab6 core

现在这是我成功的时候发生的事情:

cc    -c -o graph_support.o graph_support.c
gcc -g -Wall graph_support.o lab6.o -o lab6 -lm

第二个工作正常,但第一个没有正确的 comp 和 comp_flags。

有什么原因吗?

最佳答案

你没有告诉 make 关于目标文件 graph_support.o 的任何事情,所以它决定用默认规则编译它(更多信息:man makemake -p, gnu docs ).

因此,您可能需要更改 graph.o:

graph.o : graph_support.c graph.h
$(comp) $(comp_flags) -c graph_support.c

到 graph_support.o:

graph_support.o : graph_support.c graph.h
$(comp) $(comp_flags) -c graph_support.c

通常与默认(隐式)规则一起使用。您可以将编译标志添加到 CFLAGS 变量(而不是 comp_flags),并且您不需要像

这样的规则
graph_support.o : graph_support.c
...
lab6.o : lab6.c
...

关于c - makefile 编译不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20087133/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com