【问题标题】:Can't link to iconv on OS X无法链接到 OS X 上的 iconv
【发布时间】:2015-02-08 02:54:01
【问题描述】:

我正在尝试使用依赖于 iconv 的 CMake 构建一个库。我已经用 Macports 安装了它,但是每当我尝试构建库时,我都会收到以下错误:

Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _mariadb_convert_string in my_charset.c.o
  "_iconv_close", referenced from:
      _mariadb_convert_string in my_charset.c.o
  "_iconv_open", referenced from:
      _mariadb_convert_string in my_charset.c.o
ld: symbol(s) not found for architecture x86_64

我有一个FindIconv.cmake 文件,它似乎在正确的位置。会出什么问题?

【问题讨论】:

  • 尝试ninja -v获取实际的链接命令,并尝试手动重现

标签: macos cmake macports iconv ninja


【解决方案1】:

您可能与正在使用的库/头文件不匹配。看起来您使用 /usr/include 的头文件编译了源代码,并试图链接到 /opt/local/lib/libiconv.dylib

~ $ nm -m /usr/lib/libiconv.dylib | grep iconv_close
0000000000002ea4 (__TEXT,__text) external _iconv_close

~ $ nm -m /opt/local/lib/libiconv.dylib | grep iconv_close
0000000000003ec0 (__TEXT,__text) external _libiconv_close

确保使用 -I/opt/local/include 进行编译

【讨论】:

  • FindIconv.cmake 似乎指向了正确的方向。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
相关资源
最近更新 更多