[racket-dev] Build failure on OS X

From: Eric Dobson (eric.n.dobson at gmail.com)
Date: Thu Apr 21 22:26:54 EDT 2011

It looks like it was a problem with libffi, which was also out of date in my macports. I upgraded it before your email, and the build got past that point where it was failing. Hopefully it won't have any more problems. 

Thanks for the help.

-Eric


On Apr 21, 2011, at 10:17 PM, Matthew Flatt wrote:

> The recent change to `configure' makes it use `pkg-config' to add -L
> and -I flags for libffi. But those should flags be added consistently;
> that is, you should end up with a build that uses `libiconv' from
> macports.
> 
> Did you run `configure' in a fresh build directory? If not, maybe you
> have files leftover from a previous build that had different flags from
> `configure'?
> 
> If not, can you show the compile line for "string.c"?
> 
> At Thu, 21 Apr 2011 22:01:31 -0400, Eric Dobson wrote:
>> I don't have any *FLAGS variables set in my environment when I run configure or 
>> make. But I do have libiconv installed through macports. It was out of date, 
>> and I upgraded it, but now I am getting a different message:
>> 
>> gcc -o Racket.framework/Versions/5.1.1.3/Racket  -m32 -pthread -framework 
>> CoreFoundation -dynamiclib -all_load  libracket.a libmzgc.a -ldl -lm  -liconv 
>> -L/opt/local/lib -lffi   
>> ld: warning: in /opt/local/lib/libiconv.dylib, file was built for unsupported 
>> file format which is not the architecture being linked (i386)
>> Undefined symbols:
>>  "_iconv_close", referenced from:
>>      _do_convert in libracket.a(string.o)
>>      _do_convert in libracket.a(string.o)
>>      _do_convert in libracket.a(string.o)
>>      _string_to_from_locale in libracket.a(string.o)
>>      _string_to_from_locale in libracket.a(string.o)
>>      _string_to_from_locale in libracket.a(string.o)
>>      _close_converter 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)
>>      _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
>> collect2: ld returned 1 exit status
>> 
>> (Note the warning about a different architecture.)
>> 
>> I assume that If I tell it to use the system version of iconv, things will work 
>> out. But how do I tell it to ignore the bad version?
>> 
>> -Eric
>> 
>> 
>> 
>> On Apr 21, 2011, at 9:48 PM, Matthew Flatt wrote:
>> 
>>> It looke like you have `-L/opt/local/lib' in your LDFLAGS
>>> configuration. Do you also have `-I/opt/local/include' in CPPFLAGS?
>>> 
>>> You machine is probably like mine, where you have two installations of
>>> libiconv, and this error happens when the C headers of one installation
>>> get mixed with the lib of the other.
>>> 
>>> At Thu, 21 Apr 2011 21:42:54 -0400, Eric Dobson wrote:
>>>> I tried to build the git HEAD today and ran into problems. During the make 
>>>> process, it fails to create the framework with the following error message:
>>>> 
>>>> gcc -o Racket.framework/Versions/5.1.1.3/Racket  -m32 -pthread -framework 
>>>> CoreFoundation -dynamiclib -all_load  libracket.a libmzgc.a -ldl -lm  
>> -liconv 
>>>> -L/opt/local/lib -lffi   
>>>> Undefined symbols:
>>>> "_iconv_close", referenced from:
>>>>     _do_convert in libracket.a(string.o)
>>>>     _do_convert in libracket.a(string.o)
>>>>     _do_convert in libracket.a(string.o)
>>>>     _string_to_from_locale in libracket.a(string.o)
>>>>     _string_to_from_locale in libracket.a(string.o)
>>>>     _string_to_from_locale in libracket.a(string.o)
>>>>     _close_converter 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)
>>>>     _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
>>>> collect2: ld returned 1 exit status
>>>> 
>>>> Does anyone know what might cause this?
>>>> 
>>>> Thanks,
>>>> Eric
>>>> 
>>>> 
>>>> _________________________________________________
>>>> For list-related administrative tasks:
>>>> http://lists.racket-lang.org/listinfo/dev




Posted on the dev mailing list.