架构x86_64的未定义符号:(Mac OS X 10.7)

我正在为我的CS课程学习MP。 我们的计算机实验室正在Linux OS下工作,但我尝试在家用计算机上编译代码(Mac OS X)。 我收到以下错误:

Undefined symbols for architecture x86_64: "_tdestroy", referenced from: _dictionary_destroy in libdictionary.o _dictionary_destroy_free in libdictionary.o ld: symbol(s) not found for architecture x86_64 

我尝试在网上找到解决方案,但我没有成功。 我们在Makefile中使用以下宏:

 CC = gcc INC = -I. FLAGS = -g -W -Wall LIBS = -lpthread 

有任何想法吗?

从tdestroy的GNU手册页:

 SVr4, POSIX.1-2001. The function tdestroy() is a GNU extension 

这意味着此function在OS X上不可用

编辑:把这个包括在内:

 #ifndef _GNU_SOURCE void tdestroy(void *root, void (*free_node)(void *nodep)) { } #endif 

您可以尝试使用twalk / tdelete / free来实现tdestroy – 它应该很难做到,但是将它留空也应该工作(但它会在OSX上造成内存泄漏)。

编辑2:添加了手册页的链接(10倍到Cameron)