2010-05-08 57 views
-1

我在linklist.h和linklist.c中的两个文件中实现了一个链接列表,并且我调用main.c中main函数的linklist.h中定义的一些函数 。 linklist.h包含在linklist.c和main.c中。当我用Makefile编译GCC的这个程序时,会出现名为“undefined reference to xxx”的错误。我认为我的Makefile的写法如下。那么这个链接错误的可能原因是什么用GCC编译时未定义引用“func”

CC=gcc 

CFLAGS= -g -O2 

TARGET=target 

OBJECTS=main.o linklist.o 

TARGET: $(OBJECTS) 

$(CC) $(CFLAGS) $(OBJECTS) -o $(TARGET) 

clean: 

rm target $(OBJECTS) 

main.o:linklist.h 

linklist.o:linklist.h 
+0

我对makefiles了解不多,但除了头文件之外,还应该在''linklist.c''和'main.c'这个地方提及吗? – stakx 2010-05-08 21:39:50

+0

不,命名对象文件就足够了。通过推理规则知道哪些C文件与对象文件相关联。 – Jens 2012-05-31 12:40:22

回答

1

makefile看起来OK。

仔细查看链接器报告的函数名称拼写和源代码中的名称。

检查函数是否在linklist.c中声明为static;如果是,它在main.c中不可用。

否则,我们可能需要查看您的代码和实际错误。

+0

谢谢,我再次检查源代码,函数名称的拼写在linklist.c和linklist.h中有点不同,所以这是您提到的根本原因 – user335840 2010-05-08 18:49:40

相关问题