kdb2_dbopen missing symbol . . . sorta

Daniel Henninger daniel at unity.ncsu.edu
Wed Jun 11 16:46:05 EDT 2003


> kdb2_dbopen() should be defined in the lidbdb compiled by krb5.
> Perhaps you're not looking there.

Interesting.  This doesn't get installed though?

> 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.

        * db/db.c (kdb2_dbopen): Rename to avoid colliding with NetBSD
        libc.
I was looking at that, but I guess I misunderstood.  (db2's changelog)

> 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?

Ok, it's an in-house perl module and it's linked against:
-lkadm5clnt -lkrb524 -lkrb4 -ldes425 -lgssapi_krb5 -lkrb5 -lgssrpc -ldyn
-lk5crypto -lcom_err -lsocket -lresolv -lnsl

And a -L/usr/kerberos/lib and a -R/usr/kerberos/lib and this is under
Solaris 2.6, 7, 8, and 9.

(i may have to audit some of those libraries  I'm not convinced all of
those are necessary, but we'll see)

Anyway, what I get is:
fatal: relocation error: file /usr/kerberos/lib/libkdb5.so.3: symbol
kdb2_dbopen: referenced symbol not found

This only began after I upgraded us from 1.2.5 to 1.2.7.  I compile
Kerberos with:
--prefix=/usr/kerberos --with-krb4
--with-tcl=/afs/bp.ncsu.edu/contrib/tcl83 --enable-shared

Am I doing something obvious wrong?  My own stuff isn't using kdb2_dbopen
directly and:
ghidora 5.8 [4:44pm] <2> ...NCSUlib-2.00> nm /usr/kerberos/lib/* | grep kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
                 U kdb2_dbopen
ghidora 5.8 [4:45pm] <0> ...NCSUlib-2.00>

it doesn't appear to be defined anywhere.

Daniel

>
> 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.
>
> ---Tom
>

-- 
/\\\----------------------------------------------------------------------///\
\ \\\      Daniel Henninger           http://www.vorpalcloud.org/        /// /
 \_\\\      North Carolina State University - Systems Programmer        ///_/
    \\\                   Information Technology <IT>                  ///
     """--------------------------------------------------------------"""


More information about the krbdev mailing list