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

2019-09-16 13:13发布

我工作的MP为我的CS类。 我们的计算机实验室都在Linux操作系统下工作,但我试图编译我的家庭计算机(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

有任何想法吗?

Answer 1:

从的GNU手册页tdestroy :

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 /自由地实现tdestroy - 它should'n是很难做到的,但离开它空应太(但它会创建OSX内存泄漏)。

编辑2:添加链接到手册页(10X卡梅伦)



文章来源: Undefined symbols for architecture x86_64: (Mac OS X 10.7)