Date: Fri, 14 Apr 2006 21:31:52 +0900 (JST) From: Tomoyuki Murakami <tomoyuki@pobox.com> To: jeremie@le-hen.org Cc: freebsd-hackers@FreeBSD.org Subject: Re: linker mysteries Message-ID: <20060414.213152.74737565.tomoyuki@pobox.com> In-Reply-To: <20060413211224.GO71412@obiwan.tataz.chchile.org> References: <20060413211224.GO71412@obiwan.tataz.chchile.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
>>> On Thu, 13 Apr 2006 23:12:24 +0200,
>>> Jeremie Le Hen <jeremie@le-hen.org> wrote:
jeremie> If I comment out the variable assignements :
jeremie> % .if !defined(NO_CRYPT) && !defined(NO_OPENSSL)
jeremie> % #CFLAGS+= -DWITH_SSL
jeremie> % #DPADD= ${LIBSSL} ${LIBCRYPTO}
jeremie> % #LDADD= -lssl -lcrypto
jeremie> % .endif
jeremie>
jeremie> The resulting linker command is now :
jeremie> % /usr/bin/ld -V -Bshareable -o libfetch.so.4 /usr/lib/crti.o /usr/lib/crtbeginS.o -L/usr/lib -x -soname libfetch.so.4 file.So http.So ftp.So common.So fetch.So -lgcc_pic -lgcc_pic /usr/lib/crtendS.o /usr/lib/crtn.o
jeremie>
jeremie> As you can see, we don't have "-lssl -lcrypto" any more. However, ldd(1)
jeremie> still says that libfetch.so is linked against those libraries :
jeremie> % jarjarbinks# ldd libfetch.so
jeremie> % libfetch.so:
jeremie> % libssl.so.4 => /usr/lib/libssl.so.4 (0x2c72e000)
jeremie> % libcrypto.so.4 => /lib/libcrypto.so.4 (0x2cd74000)
jeremie>
jeremie> Only linking addresses change, but they do at every compilation.
jeremie>
jeremie> I would be glad if someone could explain why this happens.
Makefile of libfetch includes
.include <bsd.lib.mk>
at last line, and, you can see /usr/share/mk/bsd.lib.mk includes
bsd.libnames.mk
this makefile has
....
.if defined(LDFLAGS) && !empty(LDFLAGS:M-static)
.if !defined(NO_KERBEROS) && !defined(NOCRYPT) &&
!defined(NO_OPENSSL)
LIBPAM+= ${LIBKRB5} ${LIBASN1} ${LIBCRYPTO} ${LIBCRYPT} \
${LIBROKEN} ${LIBCOM_ERR}
MINUSLPAM+= -lkrb5 -lasn1 -lcrypto -lcrypt -lroken -lcom_err
.endif
LIBPAM+= ${LIBRADIUS} ${LIBTACPLUS} ${LIBCRYPT} \
${LIBUTIL} ${LIBOPIE} ${LIBMD}
MINUSLPAM+= -lradius -ltacplus -lcrypt \
-lutil -lopie -lmd
....
So, if you wouldn't like to do with -lssl and -lcrypto,
define NO_CRYPTO and NO_OPENSSL appropriately. e.g. in make.conf.
---
Tomo
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (FreeBSD)
iQCVAwUARD+WPscdBA2xrHKhAQIT7QP7BUxbukLWLYdgs/xveGrm57MAQuM29Cht
ECTB6d6o5a2QGkeuSXuPndeASqz5u/YMdcJHoQjmd3YR9dAd4nOWbtKaDcwvppML
z1k82Qmn09NYUSpLwEZxqWpHc/RDAFo6NW9xpPjtnCYHAdzQyu0FE1z25h+SvYn3
op8yfFzzzzE=
=Lx3J
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060414.213152.74737565.tomoyuki>
