soname
also: SO name, shared object name
The internal name and version identifier of a shared library that the linker and dynamic loader use to resolve runtime dependencies. It decouples the library's filename from its interface compatibility.
The soname (shared object name) is a symbolic identifier embedded in a shared library (.so file) that specifies which library version an executable or other library should use at runtime. It allows multiple versions of a library to coexist on a system while programs link to the correct one.
For example, the OpenSSL library might have a filename libssl.so.1.1.1w, but its soname might be libssl.so.1.1. Executables compiled against OpenSSL store the soname, not the exact filename, so they can work with any patch version (1.1.0, 1.1.1, etc.) as long as the API remains compatible.
The soname is set when compiling a library using the linker flag -Wl,-soname,libname.so.VERSION and can be inspected with readelf -d library.so or objdump -p library.so. Typically, a symlink with the soname points to the actual library file, allowing the dynamic loader to find the correct version at runtime.