.SO

Archivo SO

Shared Object (ELF shared library)
Hacer una pregunta
RESPUESTA RÁPIDA

Un archivo .so es una biblioteca de objetos compartidos en Linux y Unix, el equivalente en Linux a un .dll de Windows. Los programas lo cargan automáticamente en tiempo de ejecución; nunca se abre directamente. Si una aplicación falla con un error de «cannot open shared object file», instale la biblioteca faltante a través del gestor de paquetes de su distribución (apt, dnf, pacman) en lugar de descargar el archivo desde un sitio web.

Desarrollador: Unix/Linux ecosystem (no single vendor; ELF defined by the Tool Interface Standard / System V ABI) Categoría: Archivos de sistema Estándar abierto MIME: application/x-sharedlib
SE ABRE EN macOS Linux
Relacionado: .NOMEDIA · .DLL · .TMP · .LNK

En esta página

19k+ extensiones indexadas
Última revisión Jun 17, 2026

¿No está seguro de qué es su archivo?

Suelte cualquier archivo en nuestro identificador - leemos solo los primeros bytes para nombrar el formato.

Identificar un archivo

¿Qué es el formato de archivo SO?

Un archivo .so contiene una biblioteca compartida cargada dinámicamente para aplicaciones Unix y Linux. .so es un archivo binario utilizado para proporcionar acceso a código y datos compartidos que uno o más programas pueden usar al iniciarse. La extensión significa «Shared Object» (Objeto Compartido), lo que refleja el hecho de que una vez que la biblioteca se carga en la memoria, sus objetos -funciones y datos- pueden ser accedidos por múltiples procesos simultáneamente. El tipo MIME registrado para los archivos .so es application/x-sharedlib.

Las bibliotecas .so son objetos ELF (siglas de Executable and Linkable Format), el formato binario estándar utilizado en Linux y muchos sistemas tipo Unix para ejecutables, objetos compilados, bibliotecas compartidas y volcados de memoria (core dumps). Todo archivo ELF válido -incluidos los archivos .so- comienza con el número mágico de cuatro bytes \x7FELF en el desplazamiento 0. La estructura del archivo comprende:

  • Cabecera ELF - define la arquitectura, el endianismo y el número de bits (32 o 64 bits), además del recuento de entradas en las tablas de segmentos y secciones,
  • Tabla de cabeceras de programa - describe los segmentos de memoria utilizados en el momento de la carga,
  • Tabla de cabeceras de sección - describe las secciones individuales utilizadas por el enlazador y el depurador,
  • Datos referenciados por esas cabeceras.

Los segmentos se utilizan durante la ejecución del programa y pueden estar compuestos por múltiples secciones; las secciones se utilizan durante la operación de enlazado. Los archivos .so pueden enlazarse a un programa en tiempo de compilación o cargarse en tiempo de ejecución mediante dlopen().

Los nombres de archivo .so siguen una convención de nomenclatura en la que el nombre de la biblioteca va precedido por un prefijo lib; por ejemplo, una biblioteca llamada abc tendrá el nombre de archivo libabc.so, y se utiliza el indicador -labc al enlazar contra ella. El sufijo .so puede ir seguido de un número de versión, como libabc.so.3 para el archivo de versión principal o libabc.so.3.1.2 para una compilación con versión completa. En la práctica, libabc.so suele ser solo un enlace simbólico que apunta al archivo versionado real, y libabc.so.3 puede ser a su vez un enlace simbólico a la versión compatible más reciente. La versión almacenada en la entrada dinámica DT_SONAME es lo que el enlazador de tiempo de ejecución ld.so registra y comprueba. Algunas bibliotecas de sistema de bajo nivel -como el propio ld.so- no siguen la convención del prefijo lib.

En Windows, el concepto equivalente es un archivo .DLL; en macOS es un archivo .dylib. Las alternativas estáticas en Linux se archivan en archivos .a.

Seguridad y protección

RIESGO: MEDIUM

Un .so es código nativo ejecutable que se ejecuta dentro de cualquier proceso que lo cargue, por lo que una biblioteca compartida maliciosa puede hacer cualquier cosa que el programa anfitrión pueda. Los riesgos reales: (1) secuestro de biblioteca (library hijacking): un .so malicioso colocado donde el cargador busca primero, o el abuso de LD_PRELOAD/LD_LIBRARY_PATH, puede inyectar código en un programa legítimo; (2) descargar archivos .so individuales de sitios web aleatorios para corregir un error: estos pueden ser maliciosos o incompatibles con la ABI y pueden romper o comprometer el sistema. Instale siempre las bibliotecas desde los repositorios de paquetes firmados de su distribución. Eliminar archivos .so del sistema (en /lib, /usr/lib) puede hacer que el sistema operativo o las aplicaciones no arranquen.

Detalles del formato

en pocas palabras
NOMBRE COMPLETOShared Object (ELF shared library)
DESARROLLADORUnix/Linux ecosystem (no single vendor; ELF defined by the Tool Interface Standard / System V ABI)desde ELF format 1990s (System V Release 4); .so shared libraries are core to Linux/Unix
TIPO MIMEapplication/x-sharedlib
TIPOBiblioteca compartida ELF (Executable and Linkable Format) - código de máquina nativo compilado
ESTÁNDARAbierto · libre de regalías
MAGIC BYTES · FIRMA DE ARCHIVO
OFFSET
00010203
HEX
7F454C46
ASCII
·ELF
Los primeros cuatro bytes son 0x7F seguidos de «ELF». El byte 4 (EI_CLASS) es 1 para 32 bits / 2 para 64 bits; el byte 5 (EI_DATA) es el endianismo; el campo e_type (desplazamiento 16) es ET_DYN (0x0003) para un objeto compartido. La misma cabecera ELF es utilizada por los ejecutables y archivos de objeto de Linux, por lo que la designación .so proviene de e_type + el rol del archivo, no de un número mágico separado.

Programas que abren archivos SO

macOS1 app
binutils / file / Ghidra Código abierto macOS utiliza .dylib de forma nativa, pero los archivos .so de Linux pueden inspeccionarse con cross-binutils o Ghidra. «file lib.so» confirma que es un objeto compartido ELF.
Linux4 apps
System dynamic linker (ld.so) + package manager Integrado No se «abre» un .so: el cargador lo usa automáticamente. Para solucionar la falta de uno, instale el paquete que lo proporciona: «apt install libfoo» / «dnf install foo» / «pacman -S foo». Use «ldconfig» para actualizar la caché.
binutils (nm / objdump / readelf) Código abierto Inspeccione un .so en la línea de comandos: «nm -D lib.so» enumera los símbolos, «readelf -d lib.so» muestra el SONAME/dependencias, «objdump -d lib.so» desensambla.
ldd Integrado «ldd ./programa» o «ldd lib.so» enumera qué objetos compartidos necesita y si cada uno se resuelve; es lo primero que se debe ejecutar ante un error de «.so faltante».
Ghidra Código abierto Importe el .so para un desensamblado/descompilación completa al realizar ingeniería inversa de código nativo (también funciona en Windows/macOS).

Detalles técnicos

especificación profunda
Tipo MIMEapplication/x-sharedlib
Bytes mágicos7F 45 4C 46 («\x7FELF») en el desplazamiento 0 del archivo; magia idéntica a todos los archivos ELF; el campo e_type distingue los objetos compartidos
Valor ELF e_typeET_DYN (0x0003) - distingue un objeto compartido de un ejecutable (ET_EXEC = 0x0002) o un objeto reubicable (ET_REL = 0x0001)
BitsByte EI_CLASS en el desplazamiento 4: 1 = 32 bits (Elf32), 2 = 64 bits (Elf64); ambas variantes están ampliamente desplegadas en Linux
EndianismoByte EI_DATA en el desplazamiento 5: 1 = little-endian (ELFDATA2LSB), 2 = big-endian (ELFDATA2MSB); específico de la arquitectura
Código independiente de la posiciónDebe compilarse con -fPIC para que la biblioteca pueda mapearse en cualquier dirección virtual sin conflictos de reubicación entre procesos
Tabla de símbolos dinámicosLa sección .dynsym exporta e importa símbolos visibles en tiempo de ejecución; .dynstr contiene las cadenas de nombres correspondientes
PLT / GOTLa Procedure Linkage Table y la Global Offset Table permiten la resolución de símbolos perezosa (por defecto) o inmediata (-z now) en el momento de la carga
soname (DT_SONAME)Nombre canónico de la biblioteca incrustado en la sección dinámica ELF; ld.so registra este nombre cuando se enlaza un programa, lo que permite el seguimiento de la versión ABI independientemente del nombre del archivo
Versionado de símbolosLas secciones .gnu.version y .gnu.version_r permiten múltiples versiones de símbolos dentro de un solo archivo, lo que posibilita la evolución de la ABI compatible con versiones anteriores
Enlazador de tiempo de ejecuciónCargado por ld.so / ld-linux-x86-64.so.2; ruta de búsqueda controlada por LD_LIBRARY_PATH, DT_RUNPATH, o /etc/ld.so.conf + caché de ldconfig
Convención de nomenclaturalib<nombre>.so[.mayor[.menor.parche]]; libabc.so es normalmente un enlace simbólico de desarrollo → libabc.so.3 → libabc.so.3.1.2
Ruta de búsqueda incrustadaLas entradas dinámicas DT_RPATH o DT_RUNPATH graban las rutas de búsqueda de bibliotecas en el archivo en el momento del enlazado; se prefiere DT_RUNPATH ya que puede ser anulado por LD_LIBRARY_PATH
Herramientas de inspecciónreadelf -a, objdump -d, nm --dynamic (binutils); ldd para el listado de dependencias; el comando file identifica el tipo ELF y la arquitectura
LanzadoELF format 1990s (System V Release 4); .so shared libraries are core to Linux/Unix
Estándar abierto · libre de regalías
Especificaciónrefspecs.linuxfoundation.org

Conversiones de SO

Preguntas y respuestas de la comunidad

preguntado por usuarios
Hacer una pregunta rápida
Obtenga ayuda de personas que trabajan con archivos SO. Sea específico: incluya su sistema y la versión del software.
No se necesita cuenta · respuestas generalmente en un día

Aún no hay preguntas; sea el primero en preguntar sobre los archivos SO.

Preguntas frecuentes

¿Cómo soluciono el error 'error while loading shared libraries: libXXX.so' en Linux?
Instale el paquete que proporciona la biblioteca con su gestor de paquetes (por ejemplo, «sudo apt install libxxx» en Debian/Ubuntu, «sudo dnf install xxx» en Fedora). Busque con «apt-file search libxxx.so» o la búsqueda de paquetes de su distribución. No descargue el .so desde un sitio web.
¿Qué es un archivo .so?
Un objeto compartido: una biblioteca de código compilado enlazada dinámicamente en Linux/Unix, el equivalente a un .dll de Windows. Los programas lo cargan en tiempo de ejecución para poder compartir código común en lugar de que cada uno incluya una copia.
¿Es un .so lo mismo que un DLL de Windows?
Funcionalmente sí: ambos son bibliotecas compartidas dinámicas cargadas en tiempo de ejecución. Pero no son intercambiables: .so es código ELF para Linux/Unix, .dll es código PE para Windows. No se puede ejecutar uno en el sistema operativo del otro.
¿Puedo abrir o ejecutar un archivo .so directamente?
No: no tiene un punto de entrada y es cargado por otros programas, no se lanza por sí solo. Para ver su contenido, use herramientas de desarrollo: «nm -D», «readelf -d», «objdump -d» o descompile con Ghidra.
¿Por qué los archivos .so tienen números como libssl.so.3?
Esos son números de versión. libssl.so suele ser una cadena de enlaces simbólicos que apunta a un archivo versionado específico (libssl.so.3 -> libssl.so.3.0.2). El SONAME incrustado permite al cargador elegir una versión compatible, para que los programas antiguos sigan funcionando cuando una biblioteca se actualiza.
¿Puedo eliminar archivos .so para liberar espacio?
No los que están en los directorios de bibliotecas del sistema; los programas y el sistema operativo dependen de ellos, y eliminarlos provoca precisamente los errores de «cannot open shared object file». Solo elimine bibliotecas desinstalando su paquete a través del gestor de paquetes.

Referencias

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

Siga explorando

en toda la base de datos

Extensiones principales esta semana

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)

Extensiones relacionadas

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

Herramientas de archivo gratuitas

Un identificador de archivos y convertidor de imágenes en el navegador - todo se ejecuta en su dispositivo.

Abrir la caja de herramientas

Explorar extensiones de archivo A-Z