3

我正在为我的 CS 课程制作 MP。我们的计算机实验室在 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

有任何想法吗?

4

1 回答 1

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:添加到手册页的链接(10x 到 Cameron)

于 2012-04-14T22:29:09.767 回答