ar(0) CLIX ar(0)
NAME
ar - Common archive file format
SYNOPSIS
#include <ar.h>
DESCRIPTION
The ar archive command combines several files into one. Archives are used
mainly as libraries to be searched by the link editor ld.
Each archive begins with the archive magic string.
#define ARMAG "<arch>\n" /* magic string */
#define SARMAG 8 /* length of magic string */
Each archive which contains common object files includes an archive symbol
table. This symbol table is used by the link editor ld to determine which
archive members must be loaded during the link edit process. The archive
symbol table (if it exists) is always the first file in the archive (but
is never listed) and is automatically created and/or updated by ar.
Following the archive magic string are the archive file members. Each
file member is preceded by a file member header which is of the following
format:
#define ARFMAG "\n" /* header trailer string */
struct ar_hdr { /* file member header */
char ar_name[16]; /* '/' terminated file member name */
char ar_date[12]; /* file member date */
char ar_uid[6]; /* file member user identification */
char ar_gid[6]; /* file member group identification */
char ar_mode[8]; /* file member mode (octal) */
char ar_size[10]; /* file member size */
char ar_fmag[2]; /* header trailer string */
};
The ar_hdr contains the following members:
ar_name The blank-padded and slash (/) terminated filename.
ar_date The modification date of the file at the time of its insertion
into the archive.
ar_uid The user ID of the owner of the file at the time of its
insertion into the archive.
ar_gid The group ID of the owner of the file at the time of its
2/94 - Intergraph Corporation 1
ar(0) CLIX ar(0)
insertion into the archive.
ar_mode The mode of the file. This number is in octal.
ar_size The size of the file. Reflects the size of the file excluding
any padding.
ar_fmag The header trailer string.
All information in the file member headers is in printable ASCII. The
numeric information contained in the headers is stored as decimal numbers
(except for ar_mode which is in octal). Thus, if the archive contains
printable files, the archive itself is printable.
Common format archives can be moved from system to system as long as the
portable archive command ar is used. Conversion tools such as convert
exist to aid in the transportation of noncommon format archives to this
format.
Each archive file member begins on an even byte boundary; a newline 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 (that is, ar_name[0] == '/'). The contents of this file
are as follows:
⊕ The number of symbols. Length: 4 bytes.
⊕ The array of offsets into the archive file. Length: 4 bytes * ``the
number of symbols''.
⊕ The name string table. Length: ar_size - (4 bytes * (the number of
symbols + 1)).
The number of symbols and the array of offsets are managed with sgetl()
and sputl(). The string table contains exactly as many null terminated
strings as there are elements in the offsets array. Each offset from the
array is associated with the corresponding name from the string table (in
order). The names in the string table are all the defined global symbols
found in the common object files in the archive. Each offset is the
location of the archive header for the associated symbol.
FILES
/usr/include/ar.h
CAUTIONS
2 Intergraph Corporation - 2/94
ar(0) CLIX ar(0)
The strip command removes archive symbol entries from the header. The
archive symbol entries must be restored with the ts option of the ar
command before the archive can be used with the link editor ld.
RELATED INFORMATION
Commands: ar(1), ld(1), strip(1)
Functions: sputl(3)
2/94 - Intergraph Corporation 3