ar(4)ar(4)NAMEar - common archive file format
SYNOPSISDESCRIPTION
The command is used to concatenate several files into an archive file
(see ar(1)). Archives are used mainly as libraries to be searched by
the link editor (see ld(1)).
Each archive begins with the archive magic string.
Following the archive magic string are the archive file members. Each
file member is preceded by a file member header which is of the follow‐
ing format:
All information in the file member headers is in printable ASCII. The
numeric information contained in the headers is stored as decimal num‐
bers (except for which is in octal). Thus, if the archive contains
printable files, the archive itself is printable.
The contents of the field are slash terminated and blank-padded. The
field is the modification date of the file at the time of its insertion
into the archive. Common format archives can be moved from system to
system as long as the portable archive command is used. Note that
older versions of did not use the common archive format, and those ar‐
chives cannot be read or written by the common archiver.
Each archive file member begins on an even byte boundary; a new-line
character is inserted between files if necessary. Nevertheless, the
size given reflects the actual size of the file exclusive of padding.
Notice there is no provision for empty areas in an archive file. If
the archive symbol table exists, the first file in the archive has a
zero-length name (i.e., and The contents of this archive member are
machine-dependent. Refer to the appropriate a.out(4) manual entry for
more information.
Each archive which contains object files (see a.out(4)) may include an
archive symbol table. This symbol table is used by the link editor
(see ld(1)) to determine which archive members must be loaded during
the link edit process. The archive symbol table (if it exists) is
always the first member in the archive (but is never listed) and is
automatically created and/or updated by
If a member with a file name greater than 15 bytes exists within the
archive, then the archive will also contain an additional special mem‐
ber to store the long file name string table. The special string table
member has a zero length name where and
If a special string table exists, it will precede all non-special ar‐
chive members. If both a symbol table member and a string table member
exist then the symbol table member will always precede the string table
member.
Each entry in the string table is followed by a slash and a new-line
character. The offset of the table begins at zero. If an archive member
name exceeds 15 bytes, then the entry in the member's header does not
contain a name, instead it contains the offset into the string table
preceded by a slash.
For example, the member name contains in the field. This value repre‐
sents the offset into the string table. The member name contains in
the field. The long name string table would have the following format:
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9
┌──────────────────────────────────────────────────────────
0│ t | h | i | s | i | s | a | v | e | r |
├──────────────────────────────────────────────────────────
10│ y | l | o | n | g | f | i | l | e | n |
├──────────────────────────────────────────────────────────
20│ a | m | e | . | o | / | \n | y | e | t |
├──────────────────────────────────────────────────────────
30│ a | n | o | t | h | e | r | l | o | n |
├──────────────────────────────────────────────────────────
40│ g | f | i | l | e | n | a | m | e | . |
├──────────────────────────────────────────────────────────
50│ o | / | \n |
└────────────────
SEE ALSO
System Tools:
ar(1) create archived libraries
ld(1) invoke the link editor
Miscellaneous:
a.out(4) assembler, compiler, and linker output
magic(4) magic number for HP-UX implementations
ranlib(1) regenerate an archive symbol table
strip(1) strip symbol and line number information from an
object file
CAVEATS
removes the archive symbol table member from the archive (see
strip(1)). The archive symbol table must be restored by using the
option of the command or the ranlib(1) command before the archive can
be used with the link editor.
ar(4)