.so

What is a .so file?

SO is Linux's shared library format — the equivalent of Windows DLL, loaded by applications at runtime.

Use caution
Type System
By Unix/Linux community
MIME application/x-sharedlib

Drop any file to identify it

No upload. No signup. No sending your file halfway across the internet.
We tell you what it is, right here in your browser.

What is it

Shared objects are Linux's mechanism for code reuse. Instead of every application bundling its own copy of common functionality (cryptography, image processing, compression), they link to shared .so files at runtime. The C standard library (libc.so), OpenSSL (libssl.so), and hundreds of other libraries live as .so files in `/usr/lib/` and `/usr/lib64/`.

The naming convention includes version numbers: `libexample.so.1.2.3` is the actual file, with symlinks `libexample.so.1` (SONAME, for binary compatibility) and `libexample.so` (for the linker during compilation). This versioning scheme allows multiple library versions to coexist on the same system — a solution to "dependency hell" that Windows DLLs never quite solved.

You don't "open" .so files — they're loaded automatically by applications that depend on them. The `ldd` command shows which shared libraries a program needs. Missing .so files produce the infamous "error while loading shared libraries" message. Install the missing library's package, or set `LD_LIBRARY_PATH` if it's in a non-standard location.

Technical details
Full Name
Shared Object (Linux Library)
MIME Type
application/x-sharedlib
Developer
Unix/Linux community
Magic Bytes
7F 45 4C 46
Safety
.so requires caution. Compiled binary code. Only install shared libraries from trusted package repositories.
What opens it
Ghidra
FREE Windows / Mac / Linux
objdump / readelf (CLI)
FREE Linux
FAQ
What's the difference between .so and .dll?
.so is Linux's shared library format; .dll is Windows'. Both contain compiled code loaded by applications at runtime. They serve the same purpose but use different binary formats (ELF vs PE).
How do I fix 'error while loading shared libraries'?
Install the missing library's package (e.g., `sudo apt install libexample-dev`). If the library exists but isn't found, run `sudo ldconfig` or set `LD_LIBRARY_PATH` to its directory.
Related formats