| Summary: | OpenSSH doesn't compile with dynamic OpenSSL libraries | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Portable OpenSSH | Reporter: | Adrian <list_7531> | ||||
| Component: | Build system | Assignee: | OpenSSH Bugzilla mailing list <openssh-bugs> | ||||
| Status: | CLOSED WORKSFORME | ||||||
| Severity: | normal | ||||||
| Priority: | P2 | ||||||
| Version: | -current | ||||||
| Hardware: | UltraSPARC | ||||||
| OS: | Solaris | ||||||
| Attachments: |
|
||||||
|
Description
Adrian
2002-06-09 06:24:01 AEST
First of all, are you sure you want to do that? The OpenSSL INSTALL file says:
"Shared library is currently an experimental feature. The only reason to
have them would be to conserve memory on systems where several program
are using OpenSSL. Binary backward compatibility can't be guaranteed
before OpenSSL version 1.0."
If you update your OpenSSL shared library, you're likely to break ssh. This is a
pain, particularly if the system is some remote place.
If you still want to do this, you'll need to provide more info: What compiler?
Which version of Solaris? Do you have OpenSSL libraries or headers installed
anywhere else in the link/include paths ("find / -name 'libcrypto.[a|so]' -print
-o -name opensslv.h -print")? What's the rest of config.log say? (Add it as an
attachment to this bug report).
If you're using gcc then there is a bug in 2.95.2 (and possibly others) that
caused the -L link paths to be searched last, so if you've got an older
libcrypto somewhere (eg /usr/local/lib) it'll pick that up. See:
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=32
6
If that's your problem you can override -L by setting you LIBRARY_PATH
environment variable.
For what it's worth, what you're doing works on my Sol8/gcc-3.1 box:
$ ./configure --with-ssl-dir=/opt/src/openssl-0.9.6d && make ssh
[snip]
$ ldd ssh
[snip]
libcrypto.so.0.9.6 => /opt/src/openssl-0.9.6d/libcrypto.so.0.9.6
Created attachment 113 [details]
As requested, config.log(.gz), --with-ssl-dir meant to override /usr/local/ssl path
Further information: In response to the email from dtucker@zip.com.au: On my system: $ echo $LIBRARY_PATH /usr/local/lib:/usr/local/glib/lib:/usr/local/gtk/lib:/usr/lib:/usr/ucblib:/opt/gi mp/lib:/usr/local/kde/lib:/usr/local/qt230/lib:/usr/local/kde/lib:/usr/dt/lib:/usr /openwin/lib:/opt/gnome-1.4/lib /usr/local/ssl is a symlink to /opt/openssl096c-eng $ find /usr/local/ssl/lib -follow /usr/local/ssl/lib/libcrypto.a /usr/local/ssl/lib/libssl.a /usr/local/ssl/lib/libcrypto.so.0.9.6 /usr/local/ssl/lib/libssl.so.0.9.6 /usr/local/ssl/lib/libcrypto.so.0 /usr/local/ssl/lib/libcrypto.so /usr/local/ssl/lib/libssl.so.0 /usr/local/ssl/lib/libssl.so Adrian I think gcc is picking up a libcrypto from somewhere other than where you expect (maybe /usr/lib or /usr/local/lib). configure:8264: gcc -o conftest -O3 -Wall -Wpointer-arith -Wno-uninitialized -I/usr/local/ssl/include -I/opt/zlib/include -O3 -I/usr/local/include -L/usr/local/ssl/lib -R/usr/local/ssl/lib -L/opt/zlib/lib -R/opt/zlib/lib -L/usr/local/lib -R/usr/local/lib conftest.c -lpam -ldl -lz -lsocket -lnsl -lcrypto >&5 /var/tmp/ccikDouh.o: In function `main': /var/tmp/ccikDouh.o(.text+0x4): undefined reference to `RAND_add' collect2: ld returned 1 exit status Check for other libcrypto's: $ find / -name 'libcrypto.*' -print If any show up try: $ LIBRARY_PATH=/usr/local/ssl/lib:$LIBRARY_PATH $ export LIBRARY_PATH $ cd openssh-3.2.3p1 $ make distclean && ./configure 5 months no reply == closed bug. Mass change of RESOLVED bugs to CLOSED |