guid_g_hash_table_equal
Derek Atkins
warlord at MIT.EDU
Fri Nov 19 10:22:08 EST 2010
Donald Allen <donaldcallen at gmail.com> writes:
>>> Do `ldd /usr/local/lib/gnucash/libgncmod-app-utils.so` and make sure that
>>> libgnc-qof.so is in the list.
>>>
>>
>> dca at octavian:~$ ldd /usr/local/lib/gnucash/libgncmod-app-utils.so | fgrep
>> libgnc-qof
>> libgnc-qof.so.1 => /usr/lib64/libgnc-qof.so.1 (0x00007ffbc0dcd000)
>> dca at octavian:~$ find /usr/local -name libgnc-qof.so.1 -print
>> /usr/local/lib/libgnc-qof.so.1
>> dca at octavian:~$ nm /usr/local/lib/libgnc-qof.so.1 | fgrep
>> guid_g_hash_table_equal
>> 0000000000014510 T guid_g_hash_table_equal
>> dca at octavian:~$
>>
>
> I have a guess about what's going on here. I'm not sure what the output of
> ldd is saying (the ld man page is amazingly unhelpful, a reminder of the bad
ldd is saying that /usr/local/lib/gnucash/libgncmod-app-utils would be
loading libgnc-qof.so.1 from /usr/lib64/libgnc-qof.so.1. I.e., Your
build is improperly interacting with a packaged version.
This is one of many reasons I always recommend that people doing
development use a "prefix build":
./configure --prefix=/opt/gnucash
This will cause the build system to use library load-path encodings in
the shared objects so that it will find your built libs first.
> old 4.1BSD days on overloaded Vax 780s, where we joked "it was hard to
> build, it ought to be hard to use"), but I'm guessing that it's saying that
> the dynamic loading of libgnc-qof.so.1 is going to come from
> /usr/lib64/libgnc-qof.so.1, which is there courtesy the Slackware 2.2.9
> package that is installed. If I'm right, that's the wrong version of that
> library. I suspect that having 2.2.9 installed has confused things. Does
> this sound plausible or am I tilting at windmills? If I'm right, then I
> should remove the 2.2.9 package and re-link?
You're right in your analysis, but somewhat incorrect in your
conclusions. You do have two options: Remove 2.2.9, or rebuild into a
prefix build. There was no reason that you needed to rebuild/relink
into /usr/local.
Actually, there's also a third option, set LD_LIBRARY_PATH when you run
gnucash so that it looks into /usr/local/lib first.
But I still maintain that prefix build is the best route.
> /Don
-derek
--
Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
Member, MIT Student Information Processing Board (SIPB)
URL: http://web.mit.edu/warlord/ PP-ASEL-IA N1NWH
warlord at MIT.EDU PGP key available
More information about the gnucash-devel
mailing list