【问题标题】:libiconv issue when compiling SDL 2.0 on Mac OS X 10.6在 Mac OS X 10.6 上编译 SDL 2.0 时出现 libiconv 问题
【发布时间】:2012-11-01 04:06:50
【问题描述】:

我正在尝试在 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/894How to replace MacPort's libiconv with Mac's default 64-bit version? 的问题,看看它们是否有帮助。我卸载了 MacPorts 的所有内容,因为这两个似乎表明问题与同一个库的多个版本有关(它安装的 libiconv 有太多依赖项,无法手动卸载它们,我不再需要它们了),但我仍然得到同样的错误。有什么想法吗?

【问题讨论】:

  • 你是怎么编译的?使用 Xcode?生成文件?在命令行上调用链接器?在任何情况下,您都需要将-liconv 添加到iconv 库中的链接,还可能需要将-L/path/to/libiconv/folder 添加到链接器搜索路径中。
  • 我正在使用 makefile 进行编译。看起来它已经在使用 -liconv 进行链接了。我会尝试将路径添加到包含 libiconv 的文件夹中,看看是否有任何改变。

标签: c makefile sdl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    ./configure CPPFLAGS='-I/opt/local/include' LDFLAGS='-L/opt/local/lib'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多