[racket-dev] Errors with Racket on OS X 10.7 64bit

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Thu Sep 8 07:28:55 EDT 2011

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.



Posted on the dev mailing list.