Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Apr 1999 18:10:50 +0800
From:      Peter Wemm <peter@spinner.netplex.com.au>
To:        Mark Murray <mark@grondar.za>
Cc:        jdp@freebsd.org, obrien@freebsd.org, current@freebsd.org
Subject:   Re: Libraries with library dependancies 
Message-ID:  <19990410101057.EF0BC1F4D@spinner.netplex.com.au>
In-Reply-To: Your message of "Sat, 10 Apr 1999 10:48:37 %2B0200." <199904100848.KAA93819@greenpeace.grondar.za> 

next in thread | previous in thread | raw e-mail | index | archive | help
Mark Murray wrote:
> Hi
> 
> I've been helping somebody along with getting the new libcrypt going,
> and something has broken recently (post-egcs?), and I'm having a wee
> problem debugging it.
> 
> Libcrypt uses routines out of libmd (MD[45]* and SHA*), and a while
> back (pre-egcs), it was possible to have an "LDADD+=-lmd" in libcrypt's
> Makefile and have anything using libcrypt also automagically pick up the
> -lmd dependancy requirement. This no longer seems to work:
> 
> cc -O -pipe -I/usr/src/gnu/usr.bin/perl/miniperl/../../../../contrib/perl5 -I
    /usr/obj/usr/src/gnu/usr.bin/perl/miniperl   -I/usr/obj/usr/src/tmp/usr/inc
    lude -c /usr/src/gnu/usr.bin/perl/miniperl/../../../../contrib/perl5/minipe
    rlmain.c
> cc -O -pipe -I/usr/src/gnu/usr.bin/perl/miniperl/../../../../contrib/perl5 -I
    /usr/obj/usr/src/gnu/usr.bin/perl/miniperl   -I/usr/obj/usr/src/tmp/usr/inc
    lude  -static -o miniperl miniperlmain.o  -lperl -lm -lcrypt
   ^^^^^^^^^^^^^^^
> /usr/obj/usr/src/tmp/usr/lib/libcrypt.a(crypt-shs.o): In function `crypt_shs'
    :
> crypt-shs.o(.text+0x11): undefined reference to `SHA_Init'
> crypt-shs.o(.text+0x1f): undefined reference to `SHA_Update'
> crypt-shs.o(.text+0x3c): undefined reference to `SHA_Update'
> 
> The "undefined references" are all in libmd which is listed as above
> in libcrypt's Makefile.

This is only the case for -static..  Shared libraries have dependency
information, static libraries do not.

> I would hate to have to hunt down all usages of -lcrypt to add -lmd.

It would affect ports too, breaking a lot of things that know about -lcrypt
and have never heard of -lmd.

The way I see it, you've got several choices..

1) add -lmd for the cases where things are compiled static and leave the
rest

2) compile libcrypt.a differently to libcrypt.so, ie: add in the md*.o and
sha*.o static binaries into libcrypt by using SRCS+= sha.c in the !PIC case

3) help move ld.so to / so we can link everything dynamic.. :-)

Cheers,
-Peter




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990410101057.EF0BC1F4D>