.SO

Fichier SO

Shared Object (ELF shared library)
Poser une question
RÉPONSE RAPIDE

Un fichier .so est une bibliothèque d'objets partagés sur Linux et Unix - l'équivalent Linux d'un .dll Windows. Les programmes le chargent automatiquement lors de l'exécution ; vous ne l'ouvrez jamais directement. Si une application échoue avec une erreur « cannot open shared object file », installez la bibliothèque manquante via le gestionnaire de paquets de votre distribution (apt, dnf, pacman) plutôt que de télécharger le fichier sur un site web.

Développeur : Unix/Linux ecosystem (no single vendor; ELF defined by the Tool Interface Standard / System V ABI) Catégorie : Fichiers système Standard ouvert MIME: application/x-sharedlib
S'OUVRE SUR macOS Linux
Lié : .NOMEDIA · .DLL · .TMP · .LNK

Sur cette page

19k+ extensions indexées
Dernière révision le Jun 17, 2026

Pas sûr de la nature de votre fichier ?

Déposez n'importe quel fichier dans notre identificateur - nous lisons juste les premiers octets pour nommer le format.

Identifier un fichier

Qu'est-ce que le format de fichier SO ?

Un fichier .so contient une bibliothèque partagée chargée dynamiquement pour les applications Unix et Linux. .so est un fichier binaire utilisé pour fournir l'accès à du code et des données partagés qu'un ou plusieurs programmes peuvent utiliser lors de leur lancement. L'extension signifie « Shared Object » (objet partagé), reflétant le fait qu'une fois la bibliothèque chargée en mémoire, ses objets - fonctions et données - peuvent être consultés par plusieurs processus simultanément. Le type MIME enregistré pour les fichiers .so est application/x-sharedlib.

Les bibliothèques .so sont des objets ELF (abréviation de Executable and Linkable Format), le format binaire standard utilisé sur Linux et de nombreux systèmes de type Unix pour les exécutables, les objets compilés, les bibliothèques partagées et les vidages de mémoire (core dumps). Tout fichier ELF valide - y compris les fichiers .so - commence par le nombre magique de quatre octets \x7FELF à l'offset 0. La structure du fichier comprend :

  • L'en-tête ELF - définit l'architecture, l'endianness et la taille des mots (32 bits ou 64 bits), ainsi que le nombre d'entrées dans les tables de segments et de sections,
  • La table d'en-tête de programme - décrit les segments de mémoire utilisés au moment du chargement,
  • La table d'en-tête de section - décrit les sections individuelles utilisées par l'éditeur de liens et le débogueur,
  • Les données référencées par ces en-têtes.

Les segments sont utilisés pendant l'exécution du programme et peuvent être composés de plusieurs sections ; les sections sont utilisées pendant l'opération de liaison. Les fichiers .so peuvent être liés à un programme au moment de la compilation ou chargés à l'exécution via dlopen().

Les noms de fichiers .so suivent une convention de nommage où le nom de la bibliothèque est précédé du préfixe lib - par exemple, une bibliothèque nommée abc aura pour nom de fichier libabc.so, et le drapeau -labc est utilisé lors de la liaison. Le suffixe .so peut être suivi d'un numéro de version, tel que libabc.so.3 pour le fichier de version majeure ou libabc.so.3.1.2 pour une version complète. En pratique, libabc.so n'est souvent qu'un lien symbolique pointant vers le fichier versionné réel, et libabc.so.3 peut lui-même être un lien symbolique vers la version compatible la plus récente. La version stockée dans l'entrée dynamique DT_SONAME est ce que l'éditeur de liens dynamique ld.so enregistre et vérifie. Certaines bibliothèques système de bas niveau - comme ld.so lui-même - ne suivent pas la convention du préfixe lib.

Sur Windows, le concept équivalent est un fichier .DLL ; sur macOS, il s'agit d'un fichier .dylib. Les alternatives statiques sur Linux sont archivées dans des fichiers .a.

Sécurité et sûreté

RISQUE : MEDIUM

Un .so est un code natif exécutable qui s'exécute à l'intérieur du processus qui le charge, donc une bibliothèque partagée malveillante peut faire tout ce que le programme hôte peut faire. Les risques réels : (1) détournement de bibliothèque - un .so malveillant placé là où le chargeur cherche en premier, ou l'abus de LD_PRELOAD/LD_LIBRARY_PATH, peut injecter du code dans un programme légitime ; (2) téléchargement de fichiers .so individuels depuis des sites web aléatoires pour corriger une erreur - ceux-ci peuvent être malveillants ou incompatibles avec l'ABI et peuvent casser ou compromettre le système. Installez toujours les bibliothèques à partir des dépôts de paquets signés de votre distribution. La suppression de fichiers .so système (dans /lib, /usr/lib) peut rendre l'OS ou les applications inutilisables.

Détails du format

en bref
NOM COMPLETShared Object (ELF shared library)
DÉVELOPPEURUnix/Linux ecosystem (no single vendor; ELF defined by the Tool Interface Standard / System V ABI)depuis ELF format 1990s (System V Release 4); .so shared libraries are core to Linux/Unix
TYPE MIMEapplication/x-sharedlib
TYPEBibliothèque partagée ELF (Executable and Linkable Format) - code machine natif compilé
STANDARDOuvert · libre de droits
OCTETS MAGIQUES · SIGNATURE DE FICHIER
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
Les quatre premiers octets sont 0x7F suivis de « ELF ». L'octet 4 (EI_CLASS) est 1 pour 32 bits / 2 pour 64 bits ; l'octet 5 (EI_DATA) est l'endianness ; le champ e_type (offset 16) est ET_DYN (0x0003) pour un objet partagé. Le même en-tête ELF est utilisé par les exécutables et les fichiers objets Linux, la désignation .so provient donc de e_type + rôle du fichier, et non d'un nombre magique distinct.

Programmes qui ouvrent les fichiers SO

macOS1 app
binutils / file / Ghidra Open-source macOS utilise nativement .dylib, mais les fichiers .so de Linux peuvent être inspectés avec cross-binutils ou Ghidra. « file lib.so » confirme qu'il s'agit d'un objet partagé ELF.
Linux4 apps
System dynamic linker (ld.so) + package manager Intégré Vous n'« ouvrez » pas un .so - le chargeur l'utilise automatiquement. Pour corriger un fichier manquant, installez le paquet correspondant : « apt install libfoo » / « dnf install foo » / « pacman -S foo ». Utilisez « ldconfig » pour rafraîchir le cache.
binutils (nm / objdump / readelf) Open-source Inspectez un .so en ligne de commande : « nm -D lib.so » liste les symboles, « readelf -d lib.so » montre le SONAME/dépendances, « objdump -d lib.so » désassemble.
ldd Intégré « ldd ./programme » ou « ldd lib.so » liste les objets partagés nécessaires et si chacun est résolu - la première chose à faire pour une erreur de « .so manquant ».
Ghidra Open-source Importez le .so pour un désassemblage/décompilation complet lors de l'ingénierie inverse de code natif (fonctionne aussi sur Windows/macOS).

Détails techniques

spécifications approfondies
Type MIMEapplication/x-sharedlib
Octets magiques7F 45 4C 46 (« \x7FELF ») à l'offset 0 - signature identique à tous les fichiers ELF ; le champ e_type distingue les objets partagés
Valeur ELF e_typeET_DYN (0x0003) - distingue un objet partagé d'un exécutable (ET_EXEC = 0x0002) ou d'un objet relogeable (ET_REL = 0x0001)
BitnessOctet EI_CLASS à l'offset 4 : 1 = 32 bits (Elf32), 2 = 64 bits (Elf64) ; les deux variantes sont largement déployées sur Linux
EndiannessOctet EI_DATA à l'offset 5 : 1 = little-endian (ELFDATA2LSB), 2 = big-endian (ELFDATA2MSB) ; spécifique à l'architecture
Code indépendant de la positionDoit être compilé avec -fPIC pour que la bibliothèque puisse être projetée à n'importe quelle adresse virtuelle sans conflits de relocalisation entre les processus
Table des symboles dynamiquesLa section .dynsym exporte et importe les symboles visibles à l'exécution ; .dynstr contient les chaînes de caractères des noms correspondants
PLT / GOTLa Procedure Linkage Table et la Global Offset Table permettent une résolution de symboles paresseuse (par défaut) ou immédiate (-z now) au moment du chargement
soname (DT_SONAME)Nom canonique de la bibliothèque intégré dans la section dynamique ELF ; ld.so enregistre ce nom lors de la liaison d'un programme, permettant le suivi de version ABI indépendamment du nom de fichier
Versionnage des symbolesLes sections .gnu.version et .gnu.version_r permettent plusieurs versions de symboles dans un seul fichier, autorisant une évolution de l'ABI rétrocompatible
Éditeur de liens dynamiqueChargé par ld.so / ld-linux-x86-64.so.2 ; chemin de recherche contrôlé par LD_LIBRARY_PATH, DT_RUNPATH, ou /etc/ld.so.conf + cache ldconfig
Convention de nommagelib<nom>.so[.majeur[.mineur.correctif]] ; libabc.so est typiquement un lien symbolique de développement → libabc.so.3 → libabc.so.3.1.2
Chemin de recherche intégréLes entrées dynamiques DT_RPATH ou DT_RUNPATH figent les chemins de recherche de bibliothèques dans le fichier lors de la liaison ; DT_RUNPATH est préféré car il peut être surchargé par LD_LIBRARY_PATH
Outils d'inspectionreadelf -a, objdump -d, nm --dynamic (binutils) ; ldd pour le listage des dépendances ; la commande file identifie le type ELF et l'architecture
PubliéELF format 1990s (System V Release 4); .so shared libraries are core to Linux/Unix
Standard ouvertOui · libre de droits
Spécificationrefspecs.linuxfoundation.org

Conversions SO

Q&R de la communauté

posées par les utilisateurs
Poser une question rapide
Obtenez de l'aide de personnes qui travaillent avec des fichiers SO. Soyez précis - incluez votre système et la version du logiciel.
Aucun compte requis · réponses généralement sous un jour

Pas encore de questions - soyez le premier à poser une question sur les fichiers SO.

Foire aux questions

Comment corriger l'erreur 'error while loading shared libraries: libXXX.so' sur Linux ?
Installez le paquet qui fournit la bibliothèque avec votre gestionnaire de paquets (ex: « sudo apt install libxxx » sur Debian/Ubuntu, « sudo dnf install xxx » sur Fedora). Recherchez avec « apt-file search libxxx.so » ou la recherche de paquets de votre distribution. Ne téléchargez pas le .so depuis un site web.
Qu'est-ce qu'un fichier .so ?
Un objet partagé - une bibliothèque de code compilé liée dynamiquement sur Linux/Unix, l'équivalent d'un .dll Windows. Les programmes le chargent à l'exécution afin de partager du code commun au lieu d'en intégrer chacun une copie.
Un .so est-il identique à un DLL Windows ?
Fonctionnellement oui - les deux sont des bibliothèques partagées dynamiques chargées à l'exécution. Mais ils ne sont pas interchangeables : .so est du code ELF pour Linux/Unix, .dll est du code PE pour Windows. Vous ne pouvez pas exécuter l'un sur l'OS de l'autre.
Puis-je ouvrir ou exécuter un fichier .so directement ?
Non - il n'a pas de point d'entrée et est chargé par d'autres programmes, il ne se lance pas seul. Pour inspecter son contenu, utilisez des outils de développement : « nm -D », « readelf -d », « objdump -d », ou décompilez avec Ghidra.
Pourquoi les fichiers .so ont-ils des numéros comme libssl.so.3 ?
Ce sont des numéros de version. libssl.so est généralement une chaîne de liens symboliques pointant vers un fichier versionné spécifique (libssl.so.3 -> libssl.so.3.0.2). Le SONAME intégré permet au chargeur de choisir une version compatible, afin que les anciens programmes continuent de fonctionner lors de la mise à jour d'une bibliothèque.
Puis-je supprimer des fichiers .so pour libérer de l'espace ?
Pas ceux situés dans les répertoires de bibliothèques système - les programmes et l'OS en dépendent, et les supprimer provoque des erreurs « cannot open shared object file ». Supprimez les bibliothèques uniquement en désinstallant leur paquet via le gestionnaire de paquets.

Références

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

Continuer l'exploration

à travers la base de données

Top des extensions cette semaine

1.AQQAQQ Instant Messenger File
2.MDMarkdown Document
3.BINCD/DVD Disc Image (BIN/CUE)
4.RPMSGRestricted Permission Message
5.PARTPartial Download File
6.CRDOWNLOADChrome Partial Download File
7.NOMEDIAAndroid No-Media Marker File
8.PRDXSoftMaker Presentations Document
9.PRO6XProPresenter 6 Bundle File
10.SWFSmall Web Format (Shockwave Flash)

Extensions liées

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

Outils de fichiers gratuits

Un identificateur de fichier et un convertisseur d'images dans le navigateur - tout s'exécute sur votre appareil.

Ouvrir la boîte à outils

Parcourir les extensions de fichiers A-Z