我正在为我的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
有什么想法吗?
答案 0 :(得分:2)
来自tdestroy的GNU手册页:
SVr4, POSIX.1-2001. The function tdestroy() is a GNU extension
这意味着此功能在OS X上不可用
编辑: 把它放在包含之后:
#ifndef _GNU_SOURCE
void tdestroy(void *root, void (*free_node)(void *nodep)) { }
#endif
你可以尝试使用twalk / tdelete / free来实现tdestroy - 它应该很难做到,但是将它留空也应该工作(但它会在OSX上造成内存泄漏)。
编辑2:添加了手册页的链接(10倍到Cameron)