Eine Shared Object-Datei, identifiziert durch die Erweiterung .so, ist eine dynamisch verknüpfte Bibliothek, die hauptsächlich unter Linux und anderen Unix-ähnlichen Betriebssystemen verwendet wird. Im Gegensatz zu statischen Bibliotheken, die zur Kompilierzeit in ein Programm eingebunden werden, werden Shared Objects zur Laufzeit in den Speicher geladen, wenn das Programm ausgeführt wird. Dies ermöglicht es mehreren Programmen, denselben Bibliotheks-Code gemeinsam zu nutzen, wodurch die Gesamtgröße von ausführbaren Dateien reduziert und Speicherplatz gespart wird. Darüber hinaus können Shared Objects unabhängig von den Programmen, die sie verwenden, aktualisiert werden, was die Bereitstellung von Fehlerkorrekturen und Funktionserweiterungen ermöglicht, ohne dass eine Neukompilierung der abhängigen Anwendungen erforderlich ist. Der dynamische Linker, typischerweise ld-linux.so, ist dafür verantwortlich, Abhängigkeiten aufzulösen und die notwendigen Shared Objects in den Adressraum des Programms zu laden. Shared Objects enthalten kompilierten Code, Daten und Relokationsinformationen, die es dem dynamischen Linker ermöglichen, den Code und die Daten korrekt im Speicher zu positionieren. Sie sind eine grundlegende Komponente des Linux-Systems und bieten eine modulare und effiziente Methode zur Verwaltung von Code-Wiederverwendung und Abhängigkeiten.