ar (Unix)
El archivador (también conocido simplemente como ar) es una utilidad de Unix que mantiene grupos de ficheros como un único fichero archivo. Generalmente, se usa ar para crear y actualizar ficheros biblioteca que utiliza el editor de enlaces o enlazador; sin embargo, se puede usar para crear archivos con cualquier otro propósito. ar se incluye como una de las GNU Binutils.
Creación de un archivo
[editar]Por ejemplo, para crear un archivo a partir de los ficheros class1.o, class2.o, class3.o, se usaría la siguiente orden:
- ar rcs libclass.a class1.o class2.o class3.o
para compilar un programa que depende de class1.o, class2.o, y class3.o uno podría hacer:
- cc main.c -L. -lclass
en vez de:
- cc main.c class1.o class2.o class3.o
Las opciones -L y -l le dicen al enlazador que busque la biblioteca «libclass.a» en el directorio actual.
Detalles del formato de fichero
[editar]El formato ar nunca ha sido estandarizado, los archivos modernos están basados en un formato común con dos variantes conocidas, BSD y GNU.
Históricamente ha habido otras variantes incluyendo AIX (pequeña), AIX (grande) y Coherent, que variaban significativamente del formato común.
Los archivos deb usan el formato común.
Un fichero ar empieza con una cabecera global, seguida de una cabecera y sección de datos por cada fichero almacenado dentro del fichero ar.
La sección de datos está alineada a 2 bytes, si fuera a terminar en un punto impar se usa un «\n» como relleno.
Cabecera global
[editar]La cabecera global es un único campo que contiene la cadena ASCII mágica «!<arch>» seguida de un único carácter de control LF
Cabecera de fichero
[editar]El formato común es el siguiente.
Desde posición | Hasta posición | Nombre del campo | Formato del campo |
---|---|---|---|
0 | 15 | Nombre del fichero | ASCII |
16 | 27 | Fecha del fichero | Decimal |
28 | 33 | ID del propietario | Decimal |
34 | 39 | ID del grupo | Decimal |
40 | 47 | Modo del fichero | Octal |
48 | 57 | Tamaño del fichero en bytes | Decimal |
58 | 59 | Cabecera mágica | '\n |
Debido a las limitaciones del formato y longitud del nombre del fichero, tanto las versiones GNU como BSD han desarrollado diferentes métodos de conseguir nombres de fichero extendidos.
Variante BSD
[editar]BSD ar almacena los nombres de fichero extendidos colocando la cadena «#1/» seguida de la longitud del nombre del fichero en el campo del nombre del fichero, y agregando el nombre real del fichero a la cabecera del fichero.
Variante GNU
[editar]GNU ar almacena varios nombres de fichero extendidos en la sección de datos de un fichero con el nombre «//», este registro es referenciado por futuras cabeceras. Una cabecera referencia un nombre de fichero extendido almacenando una «/» seguida de una posición decimal al principio del nombre del fichero en la sección de datos del nombre del fichero extendido.
GNU ar utiliza una '/' para marcar el final del nombre del fichero, esto permite usar espacios sin usar un nombre de fichero extendido.
GNU ar utiliza el nombre de fichero especial «/ » para marcar que la siguiente entrada de datos contiene tabla de búsqueda de símbolos, que se usa en las bibliotecas ar para acelerar el acceso
Véase también
[editar]Enlaces externos
[editar]- ar(1) – Comandos generales en el Manual de Ubuntu
- Página de manual del ar de GNU binutils
- Página de manual del ar de Unix Seventh Edition