.SO

SO-fil

Shared Object (ELF shared library)
Still et spørsmål
HURTIGSVAR

En .so-fil er et delt objektbibliotek på Linux og Unix - Linux-ekvivalenten til en Windows .dll. Programmer laster den automatisk ved kjøretid; du åpner den aldri direkte. Hvis en app feiler med en «cannot open shared object file»-feil, bør du installere det manglende biblioteket via din distribusjons pakkebehandler (apt, dnf, pacman) i stedet for å laste ned filen fra et nettsted.

Utvikler: Unix/Linux ecosystem (no single vendor; ELF defined by the Tool Interface Standard / System V ABI) Kategori: Systemfiler Åpen standard MIME: application/x-sharedlib
ÅPNES PÅ macOS Linux
Relatert: .NOMEDIA · .DLL · .TMP · .LNK

På denne siden

19k+ filendelser indeksert
Sist vurdert Jun 17, 2026

Usikker på hva filen din er?

Slipp hvilken som helst fil inn i vår identifikator - vi leser bare de første bytene for å navngi formatet.

Identifiser en fil

Hva er SO-filformatet?

En .so-fil inneholder et dynamisk lastet delt bibliotek for Unix- og Linux-applikasjoner. .so er en binærfil som brukes til å gi tilgang til delt kode og data som ett eller flere programmer kan bruke når de startes. Filendelsen står for Shared Object, noe som gjenspeiler det faktum at når biblioteket er lastet inn i minnet, kan dets objekter - funksjoner og data - aksesseres av flere prosesser samtidig. MIME-typen som er registrert for .so-filer er application/x-sharedlib.

.so-biblioteker er ELF-objekter (forkortelse for Executable and Linkable Format), standard binærformat som brukes på tvers av Linux og mange Unix-lignende systemer for kjørbare filer, kompilerte objekter, delte biblioteker og «core dumps». Enhver gyldig ELF-fil - inkludert .so-filer - starter med det fire-byte magiske tallet \x7FELF ved posisjon 0. Filstrukturen består av:

  • ELF-hode - definerer arkitektur, endianness og bit-versjon (32-bit eller 64-bit), pluss antall oppføringer i segment- og seksjonstabellene,
  • Programhodetabell - beskriver minnesegmenter som brukes ved lasting,
  • Seksjonshodetabell - beskriver individuelle seksjoner som brukes av linkeren og debuggeren,
  • Data referert til av disse hodene.

Segmenter brukes under programkjøring og kan være sammensatt av flere seksjoner; seksjoner brukes under linking-operasjonen. .so-filer kan linkes inn i et program ved kompilering eller lastes ved kjøretid via dlopen().

.so-filnavn følger en navnekonvensjon der biblioteknavnet har et lib-prefiks - for eksempel vil et bibliotek med navn abc ha filnavnet libabc.so, og flagget -labc brukes ved linking mot det. .so-suffikset kan etterfølges av et versjonsnummer, slik som libabc.so.3 for hovedversjonsfilen eller libabc.so.3.1.2 for et fullstendig versjonert bygg. I praksis er libabc.so ofte bare en symbolsk lenke som peker til den faktiske versjonerte filen, og libabc.so.3 kan i seg selv være en symlink til den nyeste kompatible utgivelsen. Versjonen lagret i den dynamiske oppføringen DT_SONAME er det runtime-linkeren ld.so registrerer og sjekker. Noen lavnivå systembiblioteker - som ld.so selv - følger ikke lib-prefiks-konvensjonen.

På Windows er det tilsvarende konseptet en .DLL-fil; på macOS er det en .dylib-fil. Statiske alternativer på Linux arkiveres i .a-filer.

Sikkerhet og trygghet

RISIKO: MEDIUM

En .so er kjørebar maskinkode som kjører inne i prosessen som laster den, så et ondsinnet delt bibliotek kan gjøre alt vertsprogrammet kan. De reelle risikoene: (1) bibliotek-kapring - en falsk .so plassert der lasteren søker først, eller misbruk av LD_PRELOAD/LD_LIBRARY_PATH, kan injisere kode i et legitimt program; (2) nedlasting av individuelle .so-filer fra tilfeldige nettsteder for å fikse en feil - disse kan være ondsinnede eller ABI-inkompatible og kan ødelegge eller kompromittere systemet. Installer alltid biblioteker fra din distribusjons signerte pakkebrønner. Sletting av systemets .so-filer (i /lib, /usr/lib) kan gjøre at OS eller apper ikke lenger kan starte.

Formatdetaljer

i et nøtteskall
FULLT NAVNShared Object (ELF shared library)
UTVIKLERUnix/Linux ecosystem (no single vendor; ELF defined by the Tool Interface Standard / System V ABI)siden ELF format 1990s (System V Release 4); .so shared libraries are core to Linux/Unix
KATEGORISystemfiler
MIME-TYPEapplication/x-sharedlib
TYPEELF (Executable and Linkable Format) delt bibliotek - kompilert maskinkode
STANDARDÅpen · royalty-fri
MAGIC BYTES · FILSIGNATUR
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
De første fire bytene er 0x7F etterfulgt av «ELF». Byte 4 (EI_CLASS) er 1 for 32-bit / 2 for 64-bit; byte 5 (EI_DATA) er endianness; e_type-feltet (posisjon 16) er ET_DYN (0x0003) for et delt objekt. Det samme ELF-hodet brukes av kjørbare Linux-filer og objektfiler, så .so-betegnelsen kommer fra e_type + filrolle, ikke et separat magisk tall.

Programmer som åpner SO-filer

macOS1 app
binutils / file / Ghidra Åpen kildekode macOS bruker .dylib naturlig, men Linux .so-filer kan inspiseres med cross-binutils eller Ghidra. 'file lib.so' bekrefter at det er et ELF delt objekt.
Linux4 apps
System dynamic linker (ld.so) + package manager Innebygd Du «åpner» ikke en .so - lasteren bruker den automatisk. For å fikse en som mangler, installer pakken som tilbyr den: 'apt install libfoo' / 'dnf install foo' / 'pacman -S foo'. Bruk 'ldconfig' for å oppdatere bufferen.
binutils (nm / objdump / readelf) Åpen kildekode Inspiser en .so på kommandolinjen: 'nm -D lib.so' lister symboler, 'readelf -d lib.so' viser SONAME/avhengigheter, 'objdump -d lib.so' disassemblerer.
ldd Innebygd 'ldd ./program' eller 'ldd lib.so' lister hvilke delte objekter som trengs og om de blir funnet - det første man bør kjøre ved en 'missing .so'-feil.
Ghidra Åpen kildekode Importer .so-filen for full disassemblering/dekompilering ved reverse-engineering av maskinkode (kjører også på Windows/macOS).

Tekniske detaljer

dyp spesifikasjon
MIME-typeapplication/x-sharedlib
Magic bytes7F 45 4C 46 ("\x7FELF") ved filposisjon 0 - identisk magi for alle ELF-filer; e_type-feltet skiller delte objekter
Bit-versjonEI_CLASS-byte ved posisjon 4: 1 = 32-bit (Elf32), 2 = 64-bit (Elf64); begge varianter er utbredt på Linux
EndiannessEI_DATA-byte ved posisjon 5: 1 = little-endian (ELFDATA2LSB), 2 = big-endian (ELFDATA2MSB); arkitekturspesifikk
Posisjonsuavhengig kodeMå kompileres med -fPIC slik at biblioteket kan mappes til enhver virtuell adresse uten relokeringskonflikter mellom prosesser
Dynamisk symboltabell.dynsym-seksjonen eksporterer og importerer symboler synlige ved kjøretid; .dynstr inneholder de tilsvarende navnestringene
PLT / GOTProcedure Linkage Table og Global Offset Table muliggjør lat (standard) eller ivrig (-z now) symboloppløsning ved lasting
soname (DT_SONAME)Kanonisk biblioteknavn innebygd i den dynamiske ELF-seksjonen; ld.so registrerer dette navnet når et program linkes, noe som muliggjør sporing av ABI-versjon uavhengig av filnavn
Symbolversjonering.gnu.version- og .gnu.version_r-seksjoner tillater flere symbolversjoner i én fil, noe som muliggjør bakoverkompatibel ABI-evolusjon
Runtime-linkerLastet av ld.so / ld-linux-x86-64.so.2; søkesti kontrollert av LD_LIBRARY_PATH, DT_RUNPATH, eller /etc/ld.so.conf + ldconfig-buffer
Navnekonvensjonlib<navn>.so[.major[.minor.patch]]; libabc.so er vanligvis en utviklings-symlink → libabc.so.3 → libabc.so.3.1.2
Innebygd søkestiDT_RPATH eller DT_RUNPATH dynamiske oppføringer baker søkestier for biblioteker inn i filen ved linking; DT_RUNPATH foretrekkes da den kan overstyres av LD_LIBRARY_PATH
Inspeksjonsverktøyreadelf -a, objdump -d, nm --dynamic (binutils); ldd for listing av avhengigheter; file-kommandoen identifiserer ELF-type og arkitektur
UtgittELF format 1990s (System V Release 4); .so shared libraries are core to Linux/Unix
Åpen standardJa · royalty-fri
Spesifikasjonrefspecs.linuxfoundation.org

SO-konverteringer

Spørsmål og svar fra fellesskapet

spurt av brukere
Still et raskt spørsmål
Få hjelp fra folk som jobber med SO-filer. Vær spesifikk - inkluder systemet ditt og programvareversjon.
Ingen konto nødvendig · svar vanligvis innen en dag

Ingen spørsmål ennå - vær den første til å spørre om SO-filer.

Ofte stilte spørsmål

Hvordan fikser jeg 'error while loading shared libraries: libXXX.so' på Linux?
Installer pakken som inneholder biblioteket med din pakkebehandler (f.eks. 'sudo apt install libxxx' på Debian/Ubuntu, 'sudo dnf install xxx' on Fedora). Søk med 'apt-file search libxxx.so' eller din distribusjons pakkesøk. Ikke last ned .so-filen fra et nettsted.
Hva er en .so-fil?
Et delt objekt - et dynamisk lenket bibliotek med kompilert kode på Linux/Unix, tilsvarende en Windows .dll. Programmer laster den ved kjøretid slik at de kan dele felles kode i stedet for at hver applikasjon inkluderer en egen kopi.
Er en .so det samme som en Windows DLL?
Funksjonelt ja - begge er dynamiske delte biblioteker som lastes ved kjøretid. Men de kan ikke byttes om hverandre: .so er ELF-kode for Linux/Unix, .dll er PE-kode for Windows. Du kan ikke kjøre den ene på den andres operativsystem.
Kan jeg åpne eller kjøre en .so-fil direkte?
Nei - den har ikke noe startpunkt og lastes av andre programmer, den startes ikke alene. For å se inni den, bruk utviklerverktøy: 'nm -D', 'readelf -d', 'objdump -d', eller dekompiler med Ghidra.
Hvorfor har .so-filer tall som libssl.so.3?
Dette er versjonsnumre. libssl.so er vanligvis en kjede av symlinker som peker til en spesifikk versjonert fil (libssl.so.3 -> libssl.so.3.0.2). Den innebygde SONAME lar lasteren velge en kompatibel versjon, slik at gamle programmer fortsetter å fungere når et bibliotek oppdateres.
Kan jeg slette .so-filer for å frigjøre plass?
Ikke de som ligger i systemets bibliotekmapper - programmer og operativsystemet er avhengige av dem, og fjerning av dem fører til «cannot open shared object file»-feil. Fjern kun biblioteker ved å avinstallere pakken deres gjennom pakkebehandleren.

Referanser

1GNU Binutils - nm/objdump/readelf documentationwww.gnu.org
2Linux Foundation - ELF (Executable and Linkable Format) specificationrefspecs.linuxfoundation.org

Utforsk videre

på tvers av databasen

Populære filendelser denne uken

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.DATProgram Data File (generic)
4.JPGJPEG Image
5.EXEWindows Executable (Portable Executable)
6.RPMSGRestricted Permission Message
7.ICSiCalendar data file
8.PARTPartial Download File
9.BINCD/DVD Disc Image (BIN/CUE)
10.JSONJavaScript Object Notation file

Relaterte filendelser

.NOMEDIAAndroid No-Media Marker File
.DLLDynamic Link Library
.TMPTemporary File
.LNKWindows Shell Link (Shortcut)
.PKGmacOS Installer Package
.ETLEvent Trace Log

Gratis filverktøy

En filidentifikator og bildekonvertering i nettleseren - alt kjører på din enhet.

Åpne verktøykassen

Bla i filendelser A-Å