3

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

何か案は?

4

1 に答える 1

2

tdestroyの GNU man ページから:

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 でメモリ リークが発生します)。

EDIT 2: マニュアルページへのリンクを追加 (10x to Cameron)

于 2012-04-14T22:29:09.767 に答える