ar (Unix)
De Wikipedia, la enciclopedia libre
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.
Tabla de contenidos |
[editar] Creación de un archivo
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.
[editar] Detalles del formato de fichero
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.
[editar] Cabecera global
La cabecera global es un único campo que contiene la cadena ASCII mágica «!<arch>» seguida de un único carácter de control LF
[editar] Cabecera de fichero
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 dle fichero, tanto las versiones GNU como BSD han desarrollado diferentes métodos de conseguir nombres de fichero extendidos.
[editar] Variante BSD
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.
[editar] Variante GNU
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
[editar] Véase también
- .deb
- formatos de archivo
- UNIX
- Anexo:Lista de programas de Unix