[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: Solaris 10 and openldap - help needed.
I have now recompiled openldap into 2 versions
# export CFLAGS="-D_AVL_H"
# make distclean && ./configure
--prefix=/usr/local/opt/openldap/openldap-2.3.30-shared --enable-ldap
--enable-slapd=no --enable-static=no --enable-shared=yes && make depend
&& make
and
# export CFLAGS="-D_AVL_H"
# make distclean && ./configure
--prefix=/usr/local/opt/openldap/openldap-2.3.30-static --enable-ldap
--enable-slapd=no --enable-static=yes --enable-shared=no && make depend
&& make
The results with the shared ones are :
$ /usr/sfw/bin/gcc
-I/usr/local/opt//openldap/openldap-2.3.30-shared/include
/usr/local/opt/openldap/openldap-2.3.30-shared/lib/libldap.so ldaptest.c
-o ldaptest
$ ldd ldaptest
libldap-2.3.so.0 => (file not found)
libc.so.1 => /lib/libc.so.1
libm.so.2 => /lib/libm.so.2
The results with the static ones are :
$ /usr/sfw/bin/gcc
-I/usr/local/opt//openldap/openldap-2.3.30-static/include
/usr/local/opt/openldap/openldap-2.3.30-static/lib/libldap.a ldaptest.c
-o ldaptest
Undefined first referenced
symbol in file
ldap_dn2ad_canonical /var/tmp//cco5elQD.o
ld: fatal: Symbol referencing errors. No output written to ldaptest
collect2: ld returned 1 exit status
Running nm on libldap.a gives:
$ /usr/ccs/bin/nm
/usr/local/opt/openldap/openldap-2.3.30-static/lib/libldap.a | grep
_dn2ad
[57] | 3116| 120|FUNC |GLOB |0 |1
|ldap_dn2ad_canonical
So there is something odd here.
> -----Original Message-----
> From: Aaron Richton [mailto:richton@nbcs.rutgers.edu]
> Sent: 07 December 2006 14:32
> To: Robert Bannocks
> Cc: openldap-software@openldap.org
> Subject: RE: Solaris 10 and openldap - help needed.
>
> Maybe. Is the symbol actually in your libldap.a? e.g.
>
> $ nm /usr/local/lib/libldap.a | grep _dn2ad_
> [118] | 134| 21|OBJT |GLOB |0 |5
> |$XBGxIqAd5tbFHwZ.ldap_dn2ad_canonical.__func__
> [117] | 3136| 124|FUNC |GLOB |0 |2
> |ldap_dn2ad_canonical
>
> If you're seeing good results with --enable-shared=yes, maybe try
> different config lines that build both the static and shared. I don't
> immedately see how that would matter, but autoconf might be turning
off
> some part you need. Bottom line, I can get your sample program to
compile
> (I don't have static libsasl2.a, it'd be fairly meaningless), as
below.
> I'd also be wary that your .a file is a real archive and not some
magical
> libtool wrapper, and that it didn't get borked by a program like GNU
strip
> (which, historically at least, has been very dangerous on Solaris).
>
> $ /opt/SUNWspro/bin/cc -I/usr/local/include -{L,R}/usr/local/lib foo.c
> /usr/local/lib/lib{ldap,lber}.a /usr/local/ssl/lib/libssl.a
> /usr/local/ssl/lib/libcrypto.a -lsasl2 -lnsl -lsocket -lresolv -o foo
> "foo.c", line 4: warning: old-style declaration or incorrect type for:
> main
> $ ldd foo # no libldap.so
> libsasl2.so.2 => /usr/local/lib/libsasl2.so.2
> libnsl.so.1 => /usr/lib/libnsl.so.1
> libsocket.so.1 => /usr/lib/libsocket.so.1
> libresolv.so.2 => /usr/lib/libresolv.so.2
> libc.so.1 => /usr/lib/libc.so.1
> libdl.so.1 => /usr/lib/libdl.so.1
> libmp.so.2 => /usr/lib/libmp.so.2
> /usr/platform/SUNW,Sun-Fire-V210/lib/libc_psr.so.1
>
> $ gcc -R/usr/local/lib foo.c /usr/local/lib/lib{ldap,lber}.a
> /usr/local/ssl/lib/libssl.a /usr/local/ssl/lib/libcrypto.a -lsasl2
-lnsl
> -lsocket -lresolv -o foo
> $ ldd foo
> libsasl2.so.2 => /usr/local/lib/libsasl2.so.2
> libnsl.so.1 => /usr/lib/libnsl.so.1
> libsocket.so.1 => /usr/lib/libsocket.so.1
> libresolv.so.2 => /usr/lib/libresolv.so.2
> libc.so.1 => /usr/lib/libc.so.1
> libdl.so.1 => /usr/lib/libdl.so.1
> libmp.so.2 => /usr/lib/libmp.so.2
> /usr/platform/SUNW,Sun-Fire-V210/lib/libc_psr.so.1
>
>
> On Thu, 7 Dec 2006, Robert Bannocks wrote:
>
> > I *am* trying to use static libraries. Appols for the confusion
over
> > the -L and -l. I am now trying things more directly:
> >
> > $ /usr/sfw/bin/gcc -I/usr/local/opt/openldap/openldap-2.3.27/include
> > /usr/local/opt/openldap/openldap-2.3.27/lib/libldap.a
> > /usr/local/opt/openldap/openldap-2.3.27/lib/liblber.a ldaptest.c
> > Undefined first referenced
> > symbol in file
> > ldap_dn2ad_canonical /var/tmp//ccUaa9gP.o
> > ld: fatal: Symbol referencing errors. No output written to a.out
> > collect2: ld returned 1 exit status
> >
> > Doing this with 2.3.30 is no help either:
> >
> > $ /usr/sfw/bin/gcc -I/usr/local/opt/openldap/openldap-2.3.30/include
> > /usr/local/opt/openldap/openldap-2.3.30/lib/libldap.a
> > /usr/local/opt/openldap/openldap-2.3.30/lib/liblber.a ldaptest.c
> > Undefined first referenced
> > symbol in file
> > ldap_dn2ad_canonical /var/tmp//cc2EWpQ9.o
> > ld: fatal: Symbol referencing errors. No output written to a.out
> > collect2: ld returned 1 exit status
> >
> > Why is this symbol not found with the static libraries?
> > With the dynamic ones things go fine:
> >
> > $ /usr/sfw/bin/gcc -I/usr/local/opt/openldap/openldap-2.3.27/include
> > /usr/local/opt/openldap/openldap-2.3.27/lib/libldap.so
> > /usr/local/opt/openldap/openldap-2.3.27/lib/liblber.so ldaptest.c
> > $ ldd a.out
> > libldap-2.3.so.0 => (file not found)
> > liblber-2.3.so.0 => (file not found)
> > libc.so.1 => /lib/libc.so.1
> > libm.so.2 => /lib/libm.so.2
> >
> > I believe that this is an openldap issue not a Solaris one.
> >
> > Regards,
> >
> > Rob
> >
> >
> >> -----Original Message-----
> >> From: Aaron Richton [mailto:richton@nbcs.rutgers.edu]
> >> Sent: 06 December 2006 22:46
> >> To: Robert Bannocks
> >> Cc: openldap-software@openldap.org; Quanah Gibson-Mount
> >> Subject: Re: Solaris 10 and openldap - help needed.
> >>
> >>>> With the command line
> >>>> /usr/sfw/bin/gcc
-I/usr/local/opt//openldap/openldap-2.3.27/include
> >>>> -L/usr/local/opt/openldap/openldap-2.3.27/lib/libldap.a
> >>>> -L/usr/local/opt/openldap-2.3.27/lib/liblber.a ldaptest.c
> >>>
> >>> Your paths on your -L lines don't match.
> >>
> >> For that matter, I think you're confusing big L with little l.
> > Typically
> >> you'd, assuming those paths are right,
> >>
> >> gcc -I/usr/local/opt/openldap/openldap-2.3.27/include -
> >> L/usr/local/opt/openldap/openldap-2.3.27/lib -lldap -llber
ldaptest.c
> >>
> >> big L is search path, little l is library name (-lfoo =>
> > libfoo.{a,so})
> >>
> >>
> >> Looks like you're trying to use .a static libraries. If you use .so
> > shared
> >> libraries, you'll probably want an RPATH. You can Google for that
or
> > ask
> >> the Solaris community for help.
> >