2

我正在尝试在 OS X 10.6 上编译 SDL 2.0,但我收到了以下消息:

Undefined symbols:
  "_libiconv_open", referenced from:
      _SDL_iconv_string in SDL_iconv.o
      _SDL_iconv_string in SDL_iconv.o
  "_libiconv", referenced from:
      _SDL_iconv in SDL_iconv.o
      _SDL_iconv_string in SDL_iconv.o
  "_libiconv_close", referenced from:
      _SDL_iconv_string in SDL_iconv.o
      _SDL_iconv_string in SDL_iconv.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

我已经阅读了https://github.com/mxcl/homebrew/issues/894上的问题以及如何用 Mac 的默认 64 位版本替换 MacPort 的 libiconv?看看他们是否有帮助。我卸载了 MacPorts 的所有内容,因为这两个似乎表明问题与同一个库的多个版本有关(它安装的 libiconv 有太多依赖项,无法手动卸载它们,我不再需要它们了),但我仍然得到同样的错误。有任何想法吗?

4

2 回答 2

4

事实证明,在卸载 MacPorts 副本后,我的计算机上仍然有 2 个不同的 libiconv 副本。一个在 /usr/lib 中,另一个在 /usr/local/lib 中。使用 /usr/lib 中的那个进行编译会产生上述错误,但是将 -L/usr/local/lib 添加到 Makefile 中的 EXTRA_LDFLAGS 变量是有效的。

于 2012-11-01T07:47:52.727 回答
2

我找到了一个简单的解决方案。配置 SDL 源时只需添加 2 个参数:

./configure CPPFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib'
于 2014-04-05T09:27:54.560 回答