[racket-dev] Errors with Racket on OS X 10.7 64bit
At Wed, 7 Sep 2011 21:47:17 -0700, Eric Dobson wrote:
> I regularly build racket from HEAD on OS X with no problems, but
> tonight I decided to try the 64 bit version and couldn't get it to
> compile. The error I got was:
>
> Undefined symbols for architecture x86_64:
> "_iconv_close", referenced from:
> _close_converter in libracket.a(string.o)
> _scheme_close_converter in libracket.a(string.o)
> _do_convert in libracket.a(string.o)
> _byte_string_close_converter in libracket.a(string.o)
> _string_to_from_locale in libracket.a(string.o)
> "_iconv_open", referenced from:
> _do_convert in libracket.a(string.o)
> _string_to_from_locale in libracket.a(string.o)
> _scheme_open_converter in libracket.a(string.o)
> "_iconv", referenced from:
> _do_convert in libracket.a(string.o)
> ld: symbol(s) not found for architecture x86_64
> collect2: ld returned 1 exit status
> make[4]: *** [Racket.framework/Versions/5.1.3.6/Racket] Error 1
>
> The command I ran to install it was
>
> mkdir build && cd build && ../configure --disable-docs --enable-mac64
> && make -j2 && make install -j2
>
> Is there something I am missing, or is it just broken currently?
That problem happens when the build attempts to use iconv headers from
the system and iconv libraries from MacPorts.
Since (it appears) you have libffi from MacPorts, `-L/opt/local/lib'
gets added to the link line, while there's no `-I/opt/local/include'
during compile --- only the libffi-specific
`-I/opt/local/lib/libffi-3.0.9/include', so that creates a mismatch for
`-liconv'.
The simplest solution is to configure with `--disable-libffi', which
causes the build to use its own copy of libffi. I'm not sure whether
the `configure' script should be doing something different to avoid the
iconv problem automatically.