在Mac OS X 10.6.4上安装iconv gem非常困难。

3

这真是一件麻烦事。以下是奋斗的输出结果:

checking for iconv() in iconv.h... no
checking for iconv() in -liconv... no

我的命令行是:

sudo gem install iconv

"which iconv" 的结果为:
/opt/local/bin/iconv

我真的不知道那些“checking for”行上面的内容是什么意思。为什么iconv()不在iconv.h中呢?对我来说毫无意义。iconv.h位于/opt/local/include。

编辑:

这是mkmf.log的输出:

    have_func: checking for iconv() in iconv.h... -------------------- no

    "gcc -o conftest -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -I/opt/local/bin/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L/opt/local/bin/lib -L. -arch i386 -arch x86_64      -lruby  -lpthread -ldl  "
    Undefined symbols for architecture i386:
      "_libiconv", referenced from:
          _libiconv$non_lazy_ptr in ccF0PUYQ.o
    ld: symbol(s) not found for architecture i386
    collect2: ld returned 1 exit status
    Undefined symbols for architecture x86_64:
      "_libiconv", referenced from:
          _t in cc0k5gYm.o
    ld: symbol(s) not found for architecture x86_64
    collect2: ld returned 1 exit status
    lipo: can't open input file: /var/tmp//cc3Rrwkf.out (No such file or directory)
    checked program was:
    /* begin */
    1: #include <iconv.h>
    2: 
    3: /*top*/
    4: int main() { return 0; }
    5: int t() { void ((*volatile p)()); p = (void ((*)()))iconv; return 0; }
    /* end */

    "gcc -o conftest -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -I/opt/local/bin/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L/opt/local/bin/lib -L. -arch i386 -arch x86_64      -lruby  -lpthread -ldl  "
    conftest.c: In function 't':
    conftest.c:5: error: too few arguments to function 'libiconv'
    conftest.c: In function 't':
    conftest.c:5: error: too few arguments to function 'libiconv'
    lipo: can't figure out the architecture type of: /var/tmp//ccfQKL4Y.out
    checked program was:
    /* begin */
    1: #include <iconv.h>
    2: 
    3: /*top*/
    4: int main() { return 0; }
    5: int t() { iconv(); return 0; }
    /* end */

    --------------------

    have_library: checking for iconv() in -liconv... -------------------- no

    "gcc -o conftest -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -I/opt/local/bin/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L/opt/local/bin/lib -L. -arch i386 -arch x86_64      -lruby -liconv  -lpthread -ldl  "
    Undefined symbols for architecture x86_64:
      "_libiconv", referenced from:
          _t in ccorhTF7.o
    ld: symbol(s) not found for architecture x86_64
    collect2: ld returned 1 exit status
    lipo: can't open input file: /var/tmp//ccqa9vmd.out (No such file or directory)
    checked program was:
    /* begin */
    1: #include <iconv.h>
    2: 
    3: /*top*/
    4: int main() { return 0; }
    5: int t() { void ((*volatile p)()); p = (void ((*)()))iconv; return 0; }
    /* end */

    "gcc -o conftest -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -I/opt/local/bin/include  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE  -fno-common  -pipe -fno-common   conftest.c  -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L/opt/local/bin/lib -L. -arch i386 -arch x86_64      -lruby -liconv  -lpthread -ldl  "
    conftest.c: In function 't':
    conftest.c:5: error: too few arguments to function 'libiconv'
    conftest.c: In function 't':
    conftest.c:5: error: too few arguments to function 'libiconv'
    lipo: can't figure out the architecture type of: /var/tmp//cc2UrCWJ.out
    checked program was:
    /* begin */
    1: #include <iconv.h>
    2: 
    3: /*top*/
    4: int main() { return 0; }
    5: int t() { iconv(); return 0; }
    /* end */

    --------------------

你在使用哪个版本的Ruby? - Michael Papile
请粘贴 config.log 的部分内容,其中正在检查(通过尝试编译程序);您可能会发现检查已损坏。 - Nicholas Riley
完成了,尼古拉斯,看起来你是对的。似乎我的libiconv有问题?我是使用MacPorts安装的。 - RubyRedGrapefruit
2个回答

1
我也遇到了这个错误,我的操作系统是OS X 10.9.1。我的解决方案是重新安装libiconv,它是通过homebrew安装的。

0

这是最奇怪的事情。当我进入宝石目录并执行以下操作时:

ruby extconf.rb

并且:

make

并且:

make install

然后:

sudo gem install iconv

它可以工作!我只是不知道为什么它可以工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接