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