我正在为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
这意味着此功能在OS X上不可用
编辑:
将其放在包括之后:
#ifndef _GNU_SOURCE
void tdestroy(void *root, void (*free_node)(void *nodep)) { }
#endif
您可以尝试通过使用twalk/tdelete/free来实现tdestroy-这样做不是很难,但是将其保留为空也可以工作(但会在OSX上造成内存泄漏)。
编辑2:添加了指向手册页的链接(Cameron的10倍)

关于c - 架构x86_64的 undefined symbol : (Mac OS X 10.7),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10157841/

10-11 16:12