ar - maintain portable archive or library
/usr/bin/ar -d [-Vv] archive file...
/usr/bin/ar -m [-abiVv] [posname] archive file...
/usr/bin/ar -p [-sVv] archive [file]...
/usr/bin/ar -q [-csVv] archive file...
/usr/bin/ar -r [-abciuVv] [posname] archive file...
/usr/bin/ar -s [-Vv] archive
/usr/bin/ar -t [-sVv] archive [file]...
/usr/bin/ar -x [-CsTVv] archive [file]...
/usr/xpg4/bin/ar -d [-Vv] archive file...
/usr/xpg4/bin/ar -m [-abiVv] [posname] archive file...
/usr/xpg4/bin/ar -p [-sVv] archive [file]...
/usr/xpg4/bin/ar -q [-cVv] archive file...
/usr/xpg4/bin/ar -r [-abciuVv] [posname] archive file...
/usr/xpg4/bin/ar -t [-sVv] archive [file]...
/usr/xpg4/bin/ar -x [-CsTVv] archive [file]...
The ar utility maintains groups of files combined into a
single archive file. Its main use is to create and update library files.
However, it can be used for any similar purpose. The magic string and the
file headers used by ar consist of printable ASCII characters.
If an archive is composed of printable files, the entire archive is
printable.
When ar creates an archive, it creates headers in a format
that is portable across all machines. The portable archive format and
structure are described in detail in ar.h(3HEAD). The archive symbol
table described there is used by the link editor ld(1) to effect
multiple passes over libraries of object files in an efficient manner. An
archive symbol table is only created and maintained by ar when there
is at least one object file in the archive. The archive symbol table is in a
specially named file that is always the first file in the archive. This file
is never mentioned or accessible to the user. Whenever the ar command
is used to create or update the contents of such an archive, the symbol
table is rebuilt. The -s option described below forces the symbol
table to be rebuilt.
The following options are supported:
-a
Positions new files in archive after the
file named by the posname operand.
-b
Positions new files in archive before the
file named by the posname operand.
-c
Suppresses the diagnostic message that is written to
standard error by default when archive is created.
-C
Prevents extracted files from replacing like-named files
in the file system. This option is useful when -T is also used to
prevent truncated file names from replacing files with the same prefix.
-d
Deletes one or more files from
archive.
-i
Positions new files in archive before the
file named by the posname operand. This option is equivalent to
-b.
-m
Moves files. If -a, -b, or -i
with the posname operand are specified, the -m option moves
files to the new position. Otherwise, -m moves files to
the end of archive.
-p
Prints the contents of files in archive to
standard output. If no files are specified, the contents of all files
in archive are written in the order of the archive.
-q
Quickly appends files to the end of
archive. Positioning options -a, -b, and -i are
invalid. The command does not check whether the added files are already
in archive. This option is useful to avoid quadratic behavior when
creating a large archive piece-by-piece.
-r
Replaces or adds files in archive. If
archive does not exist, a new archive file is created and a diagnostic
message is written to standard error, unless the -c option is
specified. If no files are specified and the archive exists, the
results are undefined. Files that replace existing files do not change the
order of the archive. If the -u option is used with the -r
option, only those files with dates of modification later than the archive
files are replaced. If the -a, -b, or -i option is used,
the posname argument must be present and specifies that new files are
to be placed after (-a) or before (-b or -i)
posname. Otherwise, the new files are placed at the end.
-s
Forces the regeneration of the archive symbol table even
if
ar is not invoked with an option that will modify the archive
contents. This command is useful to restore the archive symbol table after the
strip(1) command has been used on the archive.
-t
Prints a table of contents of archive. The files
specified by the file operands are included in the written list. If no
file operands are specified, all files in archive are included
in the order of the archive.
-T
Allows file name truncation of extracted files whose
archive names are longer than the file system can support. By default,
extracting a file with a name that is too long is an error. In that case, a
diagnostic message is written and the file is not extracted.
-u
Updates older files. When used with the -r option,
files within archive are replaced only if the corresponding file
has a modification time that is at least as new as the modification time of
the file within archive.
-v
Gives verbose output. When used with options -d,
-r, or -x, the -v option writes a detailed file-by-file
description of the archive creation and the constituent files, and
maintenance activity. When used with -p, -v writes the name of
the file to the standard output before writing the file itself to the standard
output. When used with -t, -v includes a long listing of
information about the files within the archive. When used with -x,
-v prints the filename preceding each extraction. When writing to an
archive, -v writes a message to the standard error.
-V
Prints its version number on standard error.
/usr/xpg4/bin/ar
The following options are supported for
/usr/xpg4/bin/ar:
-v
Same as the /usr/bin/ar version, except when
writing to an archive, no message is written to the standard error.
-x
Extracts the files named by the file operands from
archive. The contents of archive are not changed. If no
file operands are given, all files in archive are extracted. If
the file name of a file extracted from archive is longer than that
supported in the directory to which it is being extracted, the results are
undefined. The modification time of each file extracted is set to the
time file is extracted from archive.
The following operands are supported:
archive
A path name of the archive file.
file
A path name. Only the last component is used when
comparing against the names of files in the archive. If two or more
file operands have the same last path name component (see
basename(1)), the results are unspecified. The implementation's archive
format will not truncate valid file names of files added to or replaced in the
archive.
posname
The name of a file in the archive file, used for relative
positioning. See options -m and -r.
See environ(7) for descriptions of the following
environment variables that affect the execution of ar: LANG,
LC_ALL, LC_CTYPE, LC_MESSAGES, LC_TIME, and
NLSPATH.
TMPDIR
Determine the pathname that overrides the default
directory for temporary files, if any.
TZ
Determine the timezone used to calculate date and time
strings written by ar -tv. If TZ is unset or null, an
unspecified default timezone is used.
The following exit values are returned:
0
Successful completion.
>0
An error occurred.
See attributes(7) for descriptions of the following
attributes:
/usr/bin/ar
ATTRIBUTE
TYPE |
ATTRIBUTE VALUE |
Interface Stability |
Committed |
/usr/xpg4/bin/ar
ATTRIBUTE
TYPE |
ATTRIBUTE VALUE |
Interface Stability |
Committed |
Standard |
See standards(7). |
basename(1), cpio(1), ld(1),
lorder(1), strip(1), tar(1), ar.h(3HEAD),
a.out(5), attributes(7), environ(7),
standards(7)
If the same file is mentioned twice in an argument list, it may be
put in the archive twice.
By convention, archives are suffixed with
".a".
When inserting ELF objects into an archive file, ar
might add "\n" characters to pad these objects to an 8-byte
boundary. Such padding improves the efficiency with which ld(1) can
access the archive. Only ELF object files are padded in this way.
Other archive members are not altered. When an object with such padding is
extracted from an archive, the padding is not included in the resulting
output.