[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: Error at make : libdb-4.3.so: could not read symbols: File in wrong format



On Monday 19 February 2007, Raphael Berlamont wrote:
> Hello list,
>
> I'm trying to compile openldap v2.3.31 (same happens with v2.3.34), on a
> FC6 _EMT64_ (I don't have the problem on a i386). At the make step, I have
> the following error :
>
> ------8<-------------
> /bin/sh ../..//libtool --mode=link cc -static -g -O2     -o slapd main.o
> globals.o bconfig.o config.o daemon.o connection.o search.o filter.o add.o
> cr.o attr.o entry.o backend.o backends.o result.o operation.o dn.o
> compare.o modify.o delete.o modrdn.o ch_malloc.o value.o ava.o bind.o
> unbind.o abandon.o filterentry.o phonetic.o acl.o str2filter.o aclparse.o
> init.o user.o repl.o lock.o controls.o extended.o kerberos.o passwd.o
> schema.o schema_check.o schema_init.o schema_prep.o schemaparse.o ad.o
> at.o mr.o syntax.o oc.o saslauthz.o oidm.o starttls.o index.o sets.o
> referral.o root_dse.o sasl.o module.o mra.o mods.o sl_malloc.o zn_malloc.o
> limits.o operational.o matchedValues.o cancel.o syncrepl.o backglue.o
> backover.o ctxcsn.o ldapsync.o frontend.o slapadd.o slapcat.o slapcommon.o
> slapdn.o slapindex.o slappasswd.o slaptest.o slapauth.o slapacl.o
> component.o aci.o alock.o  version.o libbackends.a liboverlays.a
> ../../libraries/liblunicode/liblunicode.a
> ../../libraries/librewrite/librewrite.a
> ../../libraries/liblutil/liblutil.a ../../libraries/libldap_r/libldap_r.la
> ../../libraries/liblber/liblber.la -ldb-4.3      -lsasl2  -lssl -lcrypto
> -lresolv  -pthread   \
>

The question is why libtool turns -ldb-4.3 into /usr/lib/libdb-4.3.so, maybe 
you have a libtool file for the 32bit library, and not the 64bit one.

> cc -g -O2 -o slapd main.o globals.o bconfig.o config.o daemon.o
> connection.o search.o filter.o add.o cr.o attr.o entry.o backend.o
> backends.o result.o operation.o dn.o compare.o modify.o delete.o modrdn.o
> ch_malloc.o value.o ava.o bind.o unbind.o abandon.o filterentry.o
> phonetic.o acl.o str2filter.o aclparse.o init.o user.o repl.o lock.o
> controls.o extended.o kerberos.o passwd.o schema.o schema_check.o
> schema_init.o schema_prep.o schemaparse.o ad.o at.o mr.o syntax.o oc.o
> saslauthz.o oidm.o starttls.o index.o sets.o referral.o root_dse.o sasl.o
> module.o mra.o mods.o sl_malloc.o zn_malloc.o limits.o operational.o
> matchedValues.o cancel.o syncrepl.o backglue.o backover.o ctxcsn.o
> ldapsync.o frontend.o slapadd.o slapcat.o slapcommon.o slapdn.o
> slapindex.o slappasswd.o slaptest.o slapauth.o slapacl.o component.o aci.o
> alock.o version.o -pthread  libbackends.a liboverlays.a
> ../../libraries/liblunicode/liblunicode.a
> ../../libraries/librewrite/librewrite.a
> ../../libraries/liblutil/liblutil.a
> ../../libraries/libldap_r/.libs/libldap_r.a
> /home/raphux/utils/openldap/openldap-2.3.31/libraries/liblber/.libs/liblber
>.a ../../libraries/liblber/.libs/liblber.a /usr/lib/libdb-4.3.so -lpthread
> -lsasl2 -lssl -lcrypto -lresolv -pthread
> /usr/lib/libdb-4.3.so: could not read symbols: File in wrong format
> collect2: ld returned 1 exit status
> make[2]: *** [slapd] Error 1
> make[2]: Leaving directory
> `/home/raphux/utils/openldap/openldap-2.3.31/servers/slapd'
> make[1]: *** [all-common] Error 1
> make[1]: Leaving directory
> `/home/raphux/utils/openldap/openldap-2.3.31/servers'
> make: *** [all-common] Error 1
> [raphux@rt-preprod openldap-2.3.31]$
> ------8<-------------
>
> I googlised a little, and try to add --includedir=/lib64/ to the configure
> step, but it doesn't change anything.
>
> I did the following thing that made the make working :
> - removed the /usr/lib/libdb-4.3.so symbolic link to /lib/libdb-4.3.so
> - recreate a link to /lib64/libdb-4.3.so
> Now compilation works, but I'm afraid that my system may be unstable,
> because a lot of installed software uses that library, and may have been
> compiled with the 32bits version.
>
> Is there a way to force the build of openldap to use /lib64/libdb-4.3.so
> instead of /usr/lib/libdb-4.3.so?

Easiest (IMHO): remove the 32bit -devel package.


> For info purpose :
> -------8<----------
> /usr/lib/libdb-4.3.so -> ../../lib/libdb-4.3.so
> /lib/libdb-4.3.so:   ELF 32-bit LSB shared object, Intel 80386, version 1
> (SYSV), for GNU/Linux 2.4.20, stripped
> /lib64/libdb-4.3.so: ELF 64-bit LSB shared object, x86-64, version 1
> (SYSV), for GNU/Linux 2.4.20, stripped
> -------8<----------

It would have helped if you had provided information on the Berkeley DB 
packages you have installed, e.g.:

$ rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" '*db4*'

You want to ensure that the -devel package you have is for x86_64, not ix86.

BTW, this isn't specifically an OpenLDAP question, and it would probably be 
answered better by mailing lists supporting your distribution (e.g. I have 
RHEL4 x86_64 boxes, but no FC5/FC6 boxes).

Regards,
Buchan

-- 
Buchan Milne
ISP Systems Specialist - Monitoring/Authentication Team Leader
B.Eng,RHCE(803004789010797),LPIC-2(LPI000074592)

Attachment: pgpTAeuFOCwhY.pgp
Description: PGP signature