final build.

Phil Howard phil-openssh-unix-dev at ipal.net
Wed Jun 26 20:13:14 EST 2002


On Wed, Jun 26, 2002 at 12:46:16PM +0300, Petri Kaukasoina wrote:

| On Wed, Jun 26, 2002 at 04:28:52AM -0500, Phil Howard wrote:
| > On Wed, Jun 26, 2002 at 09:46:19AM +0300, Petri Kaukasoina wrote:
| > | If you remove your /usr/lib/libcrypto.so symbolic link then openssh links
| > | that library statically even though it links other libraries dynamically.
| > 
| > That does not seem to be happening.
| 
| I don't understand.
| 
| > Is there an option to tell the configure script to just assume it is
| > missing?  At whatever point in the configure logic it makes that
| > determination, it should have an option to specifically override.  I could
| > not find it when I looked a few OpenSSH versions back.
| 
| When you do the final linking of the binary and there is '-lcrypto' on the
| line, ld links against libcrypto.so if the link is there and against
| libcrypto.a if that is all there is. (You could have libcrypto.so.0 and
| libcrypto.so.0.9.6 to make old binaries work because ld does not look for
| them).

I had added some rm statements to my openssh build script so it would
remove them before configuring, since openssl is built prior.  All of
this is done from scratch in chroot, seeded by a 400 meg slackware tree.
But I forgot to put on ldconfig, so I assume it thought the library was
going to be there.  I have no idea of all the quirkyness ld does, but
it has done this before.  But the latest build (added "ldconfig") now
seems to build it OK.

So this steps seems to be working now.

But.

Now I've hit an old OpenSSL problem.  OpenSSL wants a single specific
version of libc.  And with OpenSSL being statically linked into the
OpenSSH executeables, and libc not, problems emerge again, since the
various servers to install to have different versions of libc.

So I'm back to trying to get a purely static compile going.  The
problem seems to be that different code wants different versions
of getopt that each have at least one referenced unique symbol,
and some that are the same (causing the conflict).  And compiling
on the target machines isn't an option in most cases due to the
level of software, and some varying distributions, that have been
installed.  A fully static build seems to be the only way to make
it work.  It worked in 3.2.3p1 with a patch I got here.  I need to
find the time to convert the patch to 3.3p1 or wait for someone
else to do that.

It would be nice if I could just do:

./configure --static

and it would do whatever it takes to make it work.

-- 
-----------------------------------------------------------------
| Phil Howard - KA9WGN |   Dallas   | http://linuxhomepage.com/ |
| phil-nospam at ipal.net | Texas, USA | http://phil.ipal.org/     |
-----------------------------------------------------------------



More information about the openssh-unix-dev mailing list