From owner-freebsd-current Sat Apr 10 3:13:29 1999 Delivered-To: freebsd-current@freebsd.org Received: from spinner.netplex.com.au (spinner.netplex.com.au [202.12.86.3]) by hub.freebsd.org (Postfix) with ESMTP id 7CD1814CB7; Sat, 10 Apr 1999 03:13:13 -0700 (PDT) (envelope-from peter@spinner.netplex.com.au) Received: from spinner.netplex.com.au (localhost [127.0.0.1]) by spinner.netplex.com.au (Postfix) with ESMTP id EF0BC1F4D; Sat, 10 Apr 1999 18:10:50 +0800 (WST) (envelope-from peter@spinner.netplex.com.au) X-Mailer: exmh version 2.0.2 2/24/98 To: Mark Murray Cc: jdp@freebsd.org, obrien@freebsd.org, current@freebsd.org Subject: Re: Libraries with library dependancies In-reply-to: Your message of "Sat, 10 Apr 1999 10:48:37 +0200." <199904100848.KAA93819@greenpeace.grondar.za> Date: Sat, 10 Apr 1999 18:10:50 +0800 From: Peter Wemm Message-Id: <19990410101057.EF0BC1F4D@spinner.netplex.com.au> Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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