2012-04-14 122 views
3

我正在为CS类创建MP。我们的计算机实验室正在Linux操作系统下工作,但我试图编译我的家用电脑上的代码(Mac OS X)。我收到以下错误:体系结构x86_64的未定义符号:(Mac OS X 10.7)

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

链接错误表明,你是不是其中的一个或多个所需的文件,而编译。你如何编译它? – 2012-04-14 22:26:44

+0

只使用提供的Makefile – Krzysiek 2012-04-14 22:28:43

+0

哪里的tdestroy定义? – 2012-04-14 22:30:44

回答

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倍到卡梅伦)

+0

所以没有修复...? :( – Krzysiek 2012-04-14 22:31:06

+0

)有一个修复方法,创建你自己的函数实现,或者只是让它空着,我会更新原始答案。 – strkol 2012-04-14 22:33:19

+0

[链接到手册页](http://www.kernel.org/doc/) man-pages /在线/ pages/man3/tsearch.3.html)供参考 – Cameron 2012-04-14 22:36:39

相关问题