0

I have a .so file called abc.so If I type:

ldd abc.so
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f76f9100000)

If I type:

ls -l /usr/lib64/libssl.so.10
/usr/lib64/libssl.so.10 -> libssl.so.1.0.1e

Why is it linking to libssl.so.10 instead of libssl.so ? When I update openssl rpm I notice that:

/usr/lib64/libssl.so.10

still exists, but is there ever a case that updating an rpm would use something like libssl.so.11 in which case the dynamically linked file used in abc.so would be out of date?

Also, if I have def.so which contains:

/usr/lib/libssl.a(libssl64.so.0.9.8)

Since that is statically linked, does that mean that no matter what version of libssl.a is there since it was statically linked it will always use libssl64.so.0.9.8 ?

abalone
  • 319
  • 2
  • 4
  • 13

1 Answers1

1

Why is it linking to libssl.so.10 instead of libssl.so ?

On linux, multiple DSOs of the same name are allowed, so you could have (as you say) libssl.so.11 and/or libssl.so.9 installed along with libssl.so.10. All ldd is telling you is that abc.so is linked to libssl.so.10. A change in these version numbers usually indicate a backward incompatibility, instead of a simple bugfix.

is there ever a case that updating an rpm would use something like libssl.so.11 in which case the dynamically linked file used in abc.so would be out of date?

It is possible, because again, multiple libraries are allowed. However, I would hope that the distro maintainer would never introduce a backward incompatible library in an update.

Also, if I have def.so which contains: /usr/lib/libssl.a(libssl64.so.0.9.8)

I don't know what you've got there. Looks like it references a shared library to me.

ldav1s
  • 15,885
  • 2
  • 53
  • 56