Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
AR(5)			      File Formats Manual			 AR(5)

NAME
       ar -- archive (library) file format

SYNOPSIS
       #include	<ar.h>

DESCRIPTION
       The  archive  command ar	combines several files into one.  Archives are
       mainly used as libraries	of object files	intended to  be	 loaded	 using
       the link-editor ld(1).

       A  file	created	 with ar begins	with the ``magic'' string "!<arch>\n".
       The rest	of the archive is made up of objects, each of  which  is  com-
       posed  of  a header for a file, a possible file name, and the file con-
       tents.  The header is portable between machine architectures,  and,  if
       the file	contents are printable,	the archive is itself printable.

       The  header is made up of six variable length ASCII fields, followed by
       a two character trailer.	 The fields are	the object  name  (16  charac-
       ters),  the  file  last modification time (12 characters), the user and
       group id's (each	6 characters), the file	mode (8	 characters)  and  the
       file  size  (10 characters).  All numeric fields	are in decimal,	except
       for the file mode which is in octal.

       The modification	time is	the file st_mtime  field,  i.e.,  CUT  seconds
       since  the  epoch.   The	 user  and  group id's are the file st_uid and
       st_gid fields.  The file	mode is	the file st_mode field.	 The file size
       is the file st_size field.  The two-byte	trailer	is the string "`\n".

       Only the	name field has any provision for overflow.  If any  file  name
       is more than 16 characters in length or contains	an embedded space, the
       string "#1/" followed by	the ASCII length of the	name is	written	in the
       name  field.   The  file	 size (stored in the archive header) is	incre-
       mented by the length of the name.  The name is then written immediately
       following the archive header.

       Any unused characters in	any of these fields are	written	as space char-
       acters.	If any fields are their	particular maximum number  of  charac-
       ters in length, there will be no	separation between the fields.

       Objects	in  the	archive	are always an even number of bytes long; files
       which are an odd	number	of  bytes  long	 are  padded  with  a  newline
       (``\n'')	 character,  although  the size	in the header does not reflect
       this.

SEE ALSO
       ar(1), stat(2)

HISTORY
       There have been at least	four ar	formats.  The first was	denoted	by the
       leading ``magic'' number	0177555	(stored	as type	int).  These  archives
       were  almost certainly created on a 16-bit machine, and contain headers
       made up of five fields.	The fields are the object name (8 characters),
       the file	last modification time (type long), the	user id	 (type	char),
       the file	mode (type char) and the file size (type unsigned int).	 Files
       were padded to an even number of	bytes.

       The  second was denoted by the leading ``magic''	number 0177545 (stored
       as type int).  These archives may have been created  on	either	16  or
       32-bit machines,	and contain headers made up of six fields.  The	fields
       are  the	 object	 name (14 characters), the file	last modification time
       (type long), the	user and group id's (each type char),  the  file  mode
       (type int) and the file size (type long).  Files	were padded to an even
       number  of  bytes.  For more information	on converting from this	format
       see arcv(8).

       The current archive format (without support for	long  character	 names
       and  names with embedded	spaces)	was introduced in 4.0BSD.  The headers
       were the	same as	the current format,  with  the	exception  that	 names
       longer  than  16	 characters  were  truncated,  and names with embedded
       spaces (and often trailing spaces) were not supported.  It has been ex-
       tended for these	reasons, as described above.  This format is currently
       under development.

COMPATIBILITY
       No archive  format  is  currently  specified  by	 any  standard.	  AT&T
       System V	UNIX has historically distributed archives in a	different for-
       mat from	all of the above.

net2				 May 10, 1991				 AR(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ar&sektion=5&manpath=4.3BSD+NET%2f2>

home | help