【发布时间】:2021-04-23 01:01:36
【问题描述】:
我有三个文件。 main.c、graph.c 和 graph.h。 我知道代码可以在没有 makefile 的情况下工作,因为我在 onlinegbd 编译器上对其进行了测试。一切顺利。
当我尝试在终端中运行我的 makefile 时,我收到以下错误:
undefined reference to "function"
“函数”是我在 main 中调用的每个函数,它位于 graph.c 中。
所以这让我认为我没有在我的 makefile 中编译 graph.c。
编辑 我已经确认它是makefile。我使用以下方法编译它:
gcc -o xGraph main.c graph.c
它运行没有问题。 这是生成文件:
CC = gcc
VPATH = SRC INCLUDE
TARGET = XGraph
CFLAGS = -g -Wall
all: $(TARGET)
$(TARGET): main.o graph.o
$(CC) main.o graph.o -o $(TARGET)
main.o: main.c graph.h
$(CC) $(CFLAGS) main.c
graph.o: graph.c graph.h
$(CC) $(CFLAGS) graph.c
clean:
rm *.o *~ $(TARGET)
【问题讨论】:
-
你用什么代码得到那个错误?
-
是的,我一点也不精通makefile。那是根据我拥有的三年前的 c++ makefile 编辑的。
-
main.o和graph.o的配方已损坏。只需删除它们并让make使用其默认规则。 (这将忽略 graph.h 依赖项,但稍后会担心。) -
很高兴你得到了答案。以后在问这样的问题时,最好在问题中包含您输入的命令和获得的完整输出;特别是生成的命令和您在生成时看到的错误消息(未提取并单独显示)。如果有太多类似的错误,则只显示 FIRST 4 或 5 个错误行(不是最后一个错误!第一个错误几乎总是更有趣的错误)。适当地剪切、粘贴和格式化。干杯!