kdb2_dbopen missing symbol . . . sorta
tlyu at MIT.EDU
Wed Jun 11 10:46:35 EDT 2003
>>>>> "daniel" == Daniel Henninger <daniel at unity.ncsu.edu> writes:
daniel> I don't know exactly when this started, but I've noticed it as
daniel> of version 1.2.7. libkadm5srv and libkdb5 both contain the
daniel> symbol kdb2_dbopen, which is unresolved anywhere in the krb5
kdb2_dbopen() should be defined in the lidbdb compiled by krb5.
Perhaps you're not looking there.
daniel> I noticed in the change logs that kdb2_dbopen was changed to
daniel> k5db2_dbopen to help with conflicts, but I'm not sure all of
daniel> the kdb2_dbopen calls were caught.
Which ChangeLog are you seeing this in? I'm not finding it.
daniel> All I can figure is that
daniel> util/db2/include/db.h should be changed from:
daniel> #define dbopen kdb2_dbopen
daniel> #define dbopen k5db2_dbopen
daniel> and maybe util/db2/db/db.c as well
No. This is wrong. What is already in util/db2/include/db.h is
correct. k5db2_dbopen() is an internal interface in libkdb5.
daniel> Anyway, I haven't actually gone through and tried changing
daniel> them yet. Wanted to make sure I ran it by here first just in
daniel> case I'm just doing something wrong at compile time or I'm
daniel> missing the point of some grand scheme. =)
I'm not sure what exactly you're doing wrong. What is the exact error
you're getting? What OS, compiler, etc.? Is it happening at compile
time or at runtime? Is it happening with programs in the krb5 tree,
or with other programs compiled against krb5?
The "grand scheme" is mostly... rename dbopen() to kdb2_dbopen() in
db.h to avoid conflicts with any installed libdb. Unconditionally
build libdb as a static library. Require any programs using krb5's
libdb to link against the static libdb from the krb5 tree.
Note that this will change in krb5-1.3; the object files from the
in-tree libdb will be pulled into libkdb5 to avoid the problem of a
shared library having to depend on symbols in a static library.
More information about the krbdev