If a shared library has DT_SONAME
dynamic tag of foobar.so.56
, then no matter what you call the actual file (e.g. foo.so
, or libbar.so
), when you use that library to link an executable, the SONAME
is recorded in the executable (as DT_NEEDED
dynamic tag), and not the actual file name.
It follows that your librtmp.so
has a DT_SONAME
of librtmp.so.
. You can confirm that with:
readelf -d librtmp.so | grep SONAME
So what do you need to do to get rid of SONAME
? Get rid of -Wl,--soname=...
somewhere in your Makefile
.
how can i check executable if it uses
SONAME
or filename
The executable will always use SONAME
(if present). You can check the libraries that executable needs by looking for DT_NEEDED
tags in the executable's dynamic section:
readelf -d a.out | grep NEEDED