title: Ar (Unix)
text: # 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
  
  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
  
  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
  
  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
  
  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**
  
  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**
  
  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
  
  