gnucash linking wrong libffi.dylib

David Reiser dbreiser at gmail.com
Mon Feb 4 06:22:46 PST 2008


On Feb 4, 2008, at 1:52 AM, Peter O'Gorman wrote:

>
> On 3-Feb-08, at 11:27 PM, David Reiser wrote:
>
>>
>> On Feb 3, 2008, at 5:21 PM, Jeffrey Goldberg wrote:
>>
>>> I must confess that I do not even begin to understand prebinding.   
>>> Nor do I know what the OS X analog of the linux ldconfig command  
>>> and configuration is.  But I suspect that the answer to my problem  
>>> will lie in those directions.
>>>
>>> I've installed gnome/gnucash using macports (that was a bit of a  
>>> trick because of confusion about which guile installation was  
>>> needed.  Gnucash configure couldn't find guile16, but I had other  
>>> problems with guile 1.8.  I also needed to install "+without_docs"  
>>> because otherwise port tried and failed to install firefox)  But I  
>>> did finally get something compiled and installed.
>>>
>>> However, it won't run, and this is what I get to standard error.
>>>
>>> dyld: Library not loaded: /usr/lib/libffi.dylib
>>> Referenced from:
>>>  /System/Library/Frameworks/QuartzCore.framework/Versions/A/ 
>>> QuartzCore
>>> Reason: Incompatible library version: QuartzCore requires version  
>>> 1.0.0 or later,
>>>  but libffi.dylib provides version 0.0.0
>>>
>>> I note that there is a an /opt/local/lib/libffi.dylib installed,  
>>> but apparently that's not the dynamic library that gnucash finds.
>>>
>>
>> Seems to me that's x11 that's complaining about the version of  
>> libffi. Before 2.2, gnucash used g-wrap to to handle some  
>> functions, and g-wrap brought in a rather ancient version of  
>> libffi. gnucash has since switched to swig for the functions  
>> formerly handled by g-wrap, and you don't even need swig if you are  
>> building gnucash from a tarball.
>>
>> While I don't know anything else about your system, you might try  
>> removing g-wrap, or whatever else is supplying libffi in macports,  
>> and see if xquartz will then use the Leopard-provided /usr/lib/ 
>> libffi.dylib.
>>
>> I use that other packaging system, so I can't swear what needs to  
>> be in place, but I don't have any libffi except /usr/lib/ 
>> libffi.dylib, and gnucash works for me on an almost  identical  
>> system.
>
> Hi David,
>
> Something is setting DYLD_LIBRARY_PATH. I know that gnucash used to  
> do it, not sure if it still does. The symptoms are that  
> DYLD_LIBRARY_PATH is set to /opt/local/lib so the dynamic linker is  
> finding the version of libffi.dylib there. I am sure that otool -L  
> will confirm that the libffi in /opt/local has compatibility_version  
> 0.0.0.
>
> Does gnucash still have a wrapper script that sets DYLD_LIBRARY_PATH?
>
> Peter
> --
> Peter O'Gorman
> http://pogma.com

Yes, gnucash does set DYLD_LIBRARY_PATH. The justification for their  
adding it was to allow gnucash to pass make check on a mac. (one  
symptom being that configure can find MSGFMT, but make can't).

Jeff,
The patch I use for this is:
   perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g'  
aclocal.m4
   perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g'  
configure
   perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g'  
src/bin/gnucash.in
   perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g'  
src/bin/overrides/gnucash-env.in
   perl -pi.bak -e 's,DYLD_LIBRARY_PATH,DYLD_FALLBACK_LIBRARY_PATH,g'  
src/gnc-test-env

Dave


More information about the macports-users mailing list