¿Qué es el formato de archivo A?
Los archivos .a contienen bibliotecas del sistema utilizadas por desarrolladores de software. Estos archivos se encuentran comúnmente en sistemas tipo Unix -incluyendo Linux y macOS- mientras que los sistemas Microsoft Windows utilizan archivos .LIB para el mismo propósito. Los archivos .a proporcionan funciones compiladas y encabezados que pueden ser referenciados por archivos fuente. Las bibliotecas con una extensión .a se denominan comúnmente bibliotecas estáticas.
Un archivo .a es técnicamente un archivo en formato ar: un contenedor que alberga uno o más archivos de objetos compilados (.o). En Linux, los miembros son archivos .o en formato ELF; en macOS son objetos Mach-O. Cada archivo .a comienza con la firma ASCII de 8 bytes !<arch> seguida de un salto de línea, lo que lo hace reconocible por las herramientas de inspección de archivos. Puede listar el contenido del archivo con ar t libname.a e inspeccionar los símbolos exportados con nm libname.a.
Los programas informáticos utilizan dos tipos de bibliotecas de recursos: bibliotecas estáticas y bibliotecas dinámicas. Las bibliotecas estáticas (.lib o .a) suelen ser más grandes que las dinámicas porque su código se compila directamente en el programa de destino en el momento del enlace. Las bibliotecas dinámicas -archivos .SO en Linux, .dylib en macOS- se conectan a un programa determinado tras su ejecución o en medio de la ejecución del programa. Los desarrolladores de programas pueden personalizar su código para que funcione con varias bibliotecas vinculadas dinámicamente.
La utilidad ar (parte de GNU Binutils en Linux) es la herramienta estándar para crear y mantener archivos .a. Debido a que el enlazador extrae solo los archivos de objetos que necesita, el código no utilizado de una biblioteca estática no se incluye en el ejecutable final.
Seguridad y protección
RIESGO: LOWUn .a son datos de tiempo de compilación, no algo que el sistema operativo ejecute, por lo que representa poco riesgo directo para los usuarios finales. Para los desarrolladores, la preocupación es la confianza en la cadena de suministro: una biblioteca estática maliciosa o manipulada vincula su código directamente en su programa, así que use archivos .a solo de fuentes de SDK confiables y verifique sumas de comprobación/firmas. Un .a de fuente Ada es texto plano y es inofensivo de abrir.
Detalles del formato
en pocas palabras- Archivo de código fuente Ada - Algunos compiladores/proyectos Ada usan .a (y .ada/.adb/.ads) para el código fuente Ada en texto plano; este es el significado que registró la base de datos heredada, pero es mucho menos común que la biblioteca estática.
Programas que abren archivos A
Detalles técnicos
especificación profunda| Firma de archivo | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) en el desplazamiento de byte 0 |
| Formato de archivo | ar (Unix Archiver) - mismo formato de contenedor en sistemas Linux, macOS y BSD |
| Tipo MIME | application/x-archive |
| Tipo de archivo miembro (Linux) | Archivos de objetos reubicables ELF (.o) |
| Tipo de archivo miembro (macOS) | Archivos de objetos reubicables Mach-O (.o) |
| Tamaño del encabezado por miembro | 60 bytes - campos ASCII: nombre (16 B), marca de tiempo (12 B), UID (6 B), GID (6 B), modo (8 B), tamaño (10 B), marcador final (2 B) |
| Miembro de índice de símbolos | GNU ar utiliza un miembro llamado «/»; BSD/macOS ar utiliza «__SYMDEF» - mapea nombres de símbolos a desplazamientos de miembros para un enlace rápido |
| Convención de nomenclatura | lib<nombre>.a - p. ej., libz.a, libssl.a, libpthread.a; el prefijo «lib» es requerido por el modificador -l del enlazador |
| Compresión | Ninguna - los archivos de objetos miembros se almacenan textualmente, sin comprimir |
| Comportamiento en tiempo de enlace | El enlazador extrae solo los miembros .o que satisfacen símbolos no resueltos; los miembros no utilizados no se incluyen en el ejecutable de salida |
| Herramienta de creación estándar | ar (GNU Binutils en Linux; LLVM ar / BSD ar en macOS); invocado como: ar rcs libname.a file1.o file2.o |
| Herramienta de inspección de símbolos | nm - lista símbolos exportados, indefinidos y locales; p. ej., nm libname.a |
| Herramienta de inspección de contenido | ar t libname.a lista los miembros; ar x libname.a los extrae; objdump / otool desensambla el código de los miembros |
| Equivalente en Windows | Biblioteca estática .lib (formato COFF/PE); los compiladores cruzados de Windows como MinGW también producen archivos .a |
| Rango de tamaño de archivo típico | Varía desde unos pocos KB (biblioteca de utilidad pequeña) hasta cientos de MB (p. ej., libclang_rt.a o un libc.a completo) |
| Lanzado | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Estándar abierto | Sí · libre de regalías |
| Especificación | en.wikipedia.org |
Conversiones de A
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos A.