体系结构x86_64的未定义符号:(Mac OS X 10.7)
问题描述:
我正在为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
任何想法?
答
从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倍到卡梅伦)
链接错误表明,你是不是其中的一个或多个所需的文件,而编译。你如何编译它? – 2012-04-14 22:26:44
只使用提供的Makefile – Krzysiek 2012-04-14 22:28:43
哪里的tdestroy定义? – 2012-04-14 22:30:44