COHERENT manpages
This page displays the COHERENT manpage for ar [The librarian/archiver].
List of available manpages
Index
ar -- Command The librarian/archiver ar option [modifier][position] archive [member ...] The librarian ar edits and examines libraries. It combines several files into a file called an archive or library. Archives reduce the size of directories and allow many files to be handled as a single unit. The principal use of archives is for libraries of object files. The linker ld understands the archive format, and can search libraries of object files to resolve undefined references in a program. Options and Modifiers The mandatory option argument consists of one of the following command keys: d Delete each given member from archive. The ranlib header is updated if present. m Move each given member within archive. If no modifier is given, move each member to the end. The ranlib header is modified if present. p Print each member. This is useful only with archives of text files. q Quick append: append each member to the end of archive unconditionally. The ranlib header is not updated. r Replace each member of archive. If archive does not exist, create it. The optional modifier specifies how to perform the replacement, as described below. The ranlib header is modified if present. t Print a table of contents that lists each member specified. If none is given, list all in archive. The modifier v tells ar to give you additional information. x Extract each given member and place it into the current directory. If none is specified, extract all members. archive is not changed. The modifier may be one of the following. The modifiers a, b, i, and u may be used only with the m and r options. a If member does not exist in archive, insert it after the member named by the given position. b If member does not exist in archive, insert it before the member named by the given position. c Suppress the message normally printed when ar creates an archive. i If member does not exist in archive, insert it before the member named by the given position. This is the same as the b modifier, described above. k Preserve the modify time of a file. This modifier is useful only with the r, q, and x options. s Modify an archive's ranlib header, or create it if it does not exist. This must be used for archives read by the linker ld. u Update archive only if member is newer than the version in the archive. v Generate verbose messages. Note that because ar was created before UNIX established the standard of introducing an option with a hyphen. Therefore, the syntax of options to ar differs from most other COHERENT commands: ar expects all options and modifiers to be clumped together as its first argument, without an introductory hyphen. For example, to use the option r with the modifiers c and s on library libname.a and objects file1.o through file3.o, type the following command: # RIGHT! ar rcs libname.a file1.o file2.o file3.o The syntax # WRONG! ar r -s libname.a file1.o file2.o file3.o creates an archive named -s, which you may have some trouble removing. ar reads the environmental variables ARHEAD and ARTAIL and appends them to, respectively, the beginning and end of its command line. For example, to ensure that ar is always executed with the c modifier, insert the following into your .profile: export ARHEAD=c Library Structure All archives are written into a specialized file format. Each archive starts with a ``magic string'' called ARMAG, which identifies the file as an archive. The members of the archive follow the magic number; each is preceded by an ar_hdr structure. For information on this structure, see ar.h. The structure is followed the data of the file, which occupy the number of bytes specified by the variable ar_size. See Also ar.h, commands, ld, nm, ranlib Notes Each library that you create should have a name that begins with ``lib'' and ends with ``.a''. The prefix ``lib'' lets you call that library with the -l option to the command cc; and the linker ld ignores archives whose names do not end in .a.