I'm building and running an application that uses OpenSSL on SUSE Linux. I
don't know a lot about linking in general, just very basic stuff, so my
question might be better posed to a Linux forum, but it might be specific to
OpenSSL. Let me describe the scenario.
I have built installed OpenSSL 1.0.1c on one machine; built as a shared
library(with "shared" option on ./config). I build my application and run it
on this machine, dynamically linking OpenSSL. After some trial and error(to
get the application to use the new OpenSSL instead of the the previous install
of 0.9.8r), everything works fine, my application is using OpenSSL 1.0.1c. Now,
let's say I want to run my application on another SUSE Linux machine. However,
this machine has 0.9.8r(or any 0.9.8 level) installed. When I try to run the
application, I get an error saying it can't find OpenSSL 1.0.0. I know that
there are symbolic links set up when installing OpenSSL, so libssl.so will be
linked to libssl.so.1.0.0 after installing OpenSSL 1.0.1c. (Similar for
libcrypto.so) But in the old branch, the link is set up with libssl.so pointing
to libssl.so.0.9.8. When I build my application, it seems to know that it's
looking for libssl.so.1.0.0, instead of just the generic libssl.so. I'm basing
this on doing a readelf -d on my the .so file my make produces, and seeing the
following line: (NEEDED) Shared library: [libssl.so.1.0.0]
On the machine I moved my application to(with the older OpenSSL), the link
where OpenSSL exists shows libssl.so linked to libssl.so.0.9.8, obviously. I
started messing around with trying to build 1.0.1c to "look like" 0.9.8 by
changing the SHLIB_VERSION_NUMBER in Makefile.org and /crypto/opensslv.h, but
that started getting confusing and is probably beyond the scope of my knowledge
at this point. I've done it before with, for example, going from 0.9.8i to
0.9.8r and didn't have any problems. I suppose because the symbolic links look
the same. Has anyone had to do this before? A point in the right direction
would be appreciated. Is this even possible to go between branches like that?