ar man page on OpenSuSE

Man page or keyword search:  
man Server   25941 pages
apropos Keyword Search (all sections)
Output format
OpenSuSE logo
[printable version]

AR(1P)			   POSIX Programmer's Manual			AR(1P)

PROLOG
       This  manual  page is part of the POSIX Programmer's Manual.  The Linux
       implementation of this interface may differ (consult the	 corresponding
       Linux  manual page for details of Linux behavior), or the interface may
       not be implemented on Linux.

NAME
       ar - create and maintain library archives

SYNOPSIS
       ar -d[-v] archive file ...

       ar -m [-v] archive file ...

       ar -m -a[-v] posname archive file ...

       ar -m -b[-v] posname archive file ...

       ar -m -i[-v] posname archive file ...

       ar -p[-v][-s]archive [file ...]

       ar -q[-cv] archive file ...

       ar -r[-cuv] archive file ...

       ar -r -a[-cuv] posname archive file ...

       ar -r -b[-cuv] posname archive file ...

       ar -r -i[-cuv] posname archive file ...

       ar -t[-v][-s]archive [file ...]

       ar -x[-v][-sCT]archive [file ...]

DESCRIPTION
       The ar utility is part of the Software Development Utilities option.

       The ar utility can be used to create and maintain groups of files  com‐
       bined  into an archive. Once an archive has been created, new files can
       be added, and existing files in an archive can be  extracted,  deleted,
       or  replaced.  When an archive consists entirely of valid object files,
       the implementation shall format the archive so that it is usable	 as  a
       library	for  link  editing  (see  c99  and  fort77).  When some of the
       archived files are not valid object files, the suitability of  the  ar‐
       chive for library use is undefined.  If an archive consists entirely of
       printable files, the entire archive shall be printable.

       When ar creates an archive, it creates administrative information indi‐
       cating  whether a symbol table is present in the archive. When there is
       at least one object file that ar recognizes as such in the archive,  an
       archive	symbol table shall be created in the archive and maintained by
       ar; it is used by the link editor to search the archive.	 Whenever  the
       ar utility is used to create or update the contents of such an archive,
       the symbol table shall be rebuilt. The -s option shall force the symbol
       table to be rebuilt.

       All  file  operands  can	 be  pathnames. However, files within archives
       shall be named by a filename, which is the last component of the	 path‐
       name used when the file was entered into the archive. The comparison of
       file operands to the names of files in archives shall be	 performed  by
       comparing  the last component of the operand to the name of the file in
       the archive.

       It is unspecified whether multiple files in the archive may be  identi‐
       cally named. In the case of such files, however, each file  and posname
       operand shall match only the first file in the archive  having  a  name
       that is the same as the last component of the operand.

OPTIONS
       The  ar	utility	 shall	conform	 to  the  Base	Definitions  volume of
       IEEE Std 1003.1-2001, Section 12.2, Utility Syntax Guidelines.

       The following options shall be supported:

       -a     Position new files in the archive after the file	named  by  the
	      posname operand.

       -b     Position	new  files in the archive before the file named by the
	      posname operand.

       -c     Suppress the diagnostic message  that  is	 written  to  standard
	      error by default when the archive archive is created.

       -C     Prevent  extracted  files from replacing like-named files in the
	      file system. This option is useful when -T is also used, to pre‐
	      vent truncated filenames from replacing files with the same pre‐
	      fix.

       -d     Delete one or more files from archive.

       -i     Position new files in the archive before the file in the archive
	      named by the posname operand (equivalent to -b).

       -m     Move  the	 named files in the archive. The -a, -b, or -i options
	      with the posname operand indicate the position; otherwise,  move
	      the names files in the archive to the end of the archive.

       -p     Write the contents of the files in the archive named by file op‐
	      erands from archive to the standard output.  If no file operands
	      are specified, the contents of all files in the archive shall be
	      written in the order of the archive.

       -q     Append the named files to the end of the archive. In  this  case
	      ar does not check whether the added files are already in the ar‐
	      chive. This is useful to bypass  the  searching  otherwise  done
	      when creating a large archive piece by piece.

       -r     Replace or add files to archive. If the archive named by archive
	      does not exist, a new archive shall be created and a  diagnostic
	      message shall be 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 in
	      the archive shall not change the order  of  the  archive.	 Files
	      that  do	not  replace  existing	files  in the archive shall be
	      appended to the archive  unless a -a, -b, or -i option specifies
	      another position.

       -s     Force the regeneration of the archive symbol table even if ar is
	      not invoked with an option that modifies the  archive  contents.
	      This  option is useful to restore the archive symbol table after
	      it has been stripped; see strip.

       -t     Write a table of contents of archive  to	the  standard  output.
	      The  files  specified  by the file operands shall be included in
	      the written list. If no file operands are specified,  all	 files
	      in archive shall be included in the order of the archive.

       -T     Allow filename 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 shall be an
	      error; a diagnostic message shall be written and the file	 shall
	      not be extracted.

       -u     Update older files in the archive. When used with the -r option,
	      files in the archive shall be replaced only if the corresponding
	      file has a modification time that is at least as new as the mod‐
	      ification time of the file in the archive.

       -v     Give verbose output. When used with the  option  characters  -d,
	      -r,  or -x, write a detailed file-by-file description of the ar‐
	      chive creation and maintenance activity,	as  described  in  the
	      STDOUT section.

       When  used  with	 -p,  write the name of the file in the archive to the
       standard output before writing the file in the archive  itself  to  the
       standard output, as described in the STDOUT section.

       When  used  with	 -t,  include  a long listing of information about the
       files in the archive, as described in the STDOUT section.

       -x     Extract the files in the archive named by the file operands from
	      archive. The contents of the archive shall not be changed. If no
	      file operands are given, all  files  in  the  archive  shall  be
	      extracted. The modification time of each file extracted shall be
	      set to the time the file is extracted from the archive.

OPERANDS
       The following operands shall be supported:

       archive
	      A pathname of the archive.

       file   A pathname. Only the last component shall be used when comparing
	      against  the  names of files in the archive. If two or more file
	      operands have the same last pathname component  (basename),  the
	      results  are  unspecified.  The  implementation's archive format
	      shall not truncate valid filenames of files added to or replaced
	      in the archive.

       posname
	      The  name	 of a file in the archive, used for relative position‐
	      ing; see options -m and -r.


STDIN
       Not used.

INPUT FILES
       The archive named by archive shall be a file in the format  created  by
       ar -r.

ENVIRONMENT VARIABLES
       The following environment variables shall affect the execution of ar:

       LANG   Provide  a  default value for the internationalization variables
	      that are unset or null. (See  the	 Base  Definitions  volume  of
	      IEEE Std 1003.1-2001,  Section  8.2,  Internationalization Vari‐
	      ables for the precedence of internationalization variables  used
	      to determine the values of locale categories.)

       LC_ALL If  set  to a non-empty string value, override the values of all
	      the other internationalization variables.

       LC_CTYPE
	      Determine the locale for	the  interpretation  of	 sequences  of
	      bytes  of	 text  data as characters (for example, single-byte as
	      opposed to multi-byte characters in arguments and input files).

       LC_MESSAGES
	      Determine the locale that should be used to  affect  the	format
	      and contents of diagnostic messages written to standard error.

       LC_TIME
	      Determine the format and content for date and time strings writ‐
	      ten by ar -tv.

       NLSPATH
	      Determine the location of message catalogs for the processing of
	      LC_MESSAGES .

       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 shall be used.

ASYNCHRONOUS EVENTS
       Default.

STDOUT
       If the -d option is used with the -v option, the standard output format
       shall be:

	      "d - %s\n", <file>

       where file is the operand specified on the command line.

       If  the -p option is used with the -v option, ar shall precede the con‐
       tents of each file with:

	      "\n<%s>\n\n", <file>

       where file is the operand specified on the command line, if file	 oper‐
       ands  were  specified,  and the name of the file in the archive if they
       were not.

       If the -r option is used with the -v option:

	* If file is already in the archive, the standard output format	 shall
	  be:

	  "r - %s\n", <file>

       where <file> is the operand specified on the command line.

	* If  file  is	not already in the archive, the standard output format
	  shall be:

	  "a - %s\n", <file>

       where <file> is the operand specified on the command line.

       If the -t option is used, ar shall write the names of the files in  the
       archive to the standard output in the format:

	      "%s\n", <file>

       where  file is the operand specified on the command line, if file oper‐
       ands were specified, or the name of the file in	the  archive  if  they
       were not.

       If the -t option is used with the -v option, the standard output format
       shall be:

	      "%s %u/%u %u %s %d %d:%d %d %s\n", <member mode>, <user ID>,
		  <group ID>, <number of bytes in member>,
		  <abbreviated month>, <day-of-month>, <hour>,
		  <minute>, <year>, <file>

       where:

       <file> Shall be the operand specified on the command line, if file  op‐
	      erands were specified, or the name of the file in the archive if
	      they were not.

       <member mode>

	      Shall be formatted the same as the <file mode> string defined in
	      the  STDOUT  section of ls, except that the first character, the
	      <entry type>, is not used; the string represents the  file  mode
	      of  the  file  in	 the  archive  at  the time it was added to or
	      replaced in the archive.

       The following represent the last-modification time of a	file  when  it
       was most recently added to or replaced in the archive:

       <abbreviated month>

	      Equivalent to the format of the %b conversion specification for‐
	      mat in date.

       <day-of-month>

	      Equivalent to the format of the %e conversion specification for‐
	      mat in date.

       <hour> Equivalent to the format of the %H conversion specification for‐
	      mat in date.

       <minute>
	      Equivalent to the format of the %M conversion specification for‐
	      mat in date.

       <year> Equivalent to the format of the %Y conversion specification for‐
	      mat in date.

       When LC_TIME does not specify the POSIX locale, a different format  and
       order  of  presentation	of  these fields relative to each other may be
       used in a format appropriate in the specified locale.

       If the -x option is used with the -v option, the standard output format
       shall be:

	      "x - %s\n", <file>

       where  file is the operand specified on the command line, if file oper‐
       ands were specified, or the name of the file in	the  archive  if  they
       were not.

STDERR
       The  standard  error  shall  be	used only for diagnostic messages. The
       diagnostic message about creating a new archive when -c is  not	speci‐
       fied shall not modify the exit status.

OUTPUT FILES
       Archives are files with unspecified formats.

EXTENDED DESCRIPTION
       None.

EXIT STATUS
       The following exit values shall be returned:

	0     Successful completion.

       >0     An error occurred.

CONSEQUENCES OF ERRORS
       Default.

       The following sections are informative.

APPLICATION USAGE
       None.

EXAMPLES
       None.

RATIONALE
       The  archive  format  is not described. It is recognized that there are
       several known ar formats, which are not compatible.  The ar utility  is
       included,  however, to allow creation of archives that are intended for
       use only on one machine. The archive is specified as a file, and it can
       be  moved  as  a	 file. This does allow an archive to be moved from one
       machine to another machine that uses the same implementation of ar.

       Utilities such as pax (and its forebears tar  and  cpio)	 also  provide
       portable	 "archives".  This  is	a not a duplication; the ar utility is
       included to provide an interface primarily for make and the  compilers,
       based on a historical model.

       In historical implementations, the -q option (available on XSI-conform‐
       ing systems) is known to execute quickly because ar does not  check  on
       whether the added members are already in the archive. This is useful to
       bypass the searching otherwise  done  when  creating  a	large  archive
       piece-by-piece.	These remarks may but need not remain true for a brand
       new implementation of this utility;  hence,  these  remarks  have  been
       moved into the RATIONALE.

       BSD  implementations  historically required applications to provide the
       -s option whenever the archive was supposed to contain a symbol	table.
       As  in  this volume of IEEE Std 1003.1-2001, System V historically cre‐
       ates or updates an archive symbol table	whenever  an  object  file  is
       removed from, added to, or updated in the archive.

       The OPERANDS section requires what might seem to be true without speci‐
       fying it: the archive cannot truncate the filenames  below  {NAME_MAX}.
       Some  historical	 implementations  do  so,  however, causing unexpected
       results	 for   the   application.   Therefore,	  this	  volume    of
       IEEE Std 1003.1-2001  makes the requirement explicit to avoid misunder‐
       standings.

       According to the System V documentation, the options -dmpqrtx  are  not
       required	  to   begin   with   a	 hyphen	 (  '-'	 ).   This  volume  of
       IEEE Std 1003.1-2001 requires that a  conforming	 application  use  the
       leading hyphen.

       The  archive format used by the 4.4 BSD implementation is documented in
       this RATIONALE as an example: A file created  by	 ar  begins  with  the
       "magic"	string	"!<arch>\n"  .	The  rest of the archive is made up of
       objects, each of which is composed of a header for a file,  a  possible
       filename, and the file contents. 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 ASCII fields, followed by a two-character
       trailer. The fields are the object name (16 characters), the file  last
       modification time (12 characters), the user and group IDs (each 6 char‐
       acters), the file mode (8 characters), and the file  size  (10  charac‐
       ters).  All  numeric  fields  are in decimal, except for the file mode,
       which is in octal.

       The modification time is the file st_mtime field. The  user  and	 group
       IDs  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 "`<newline>" .

       Only  the name field has any provision for overflow. If any filename 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 incremented
       by the length of the name. The name is then written immediately follow‐
       ing the archive header.

       Any unused characters in any of these fields are written	 as  <space>s.
       If  any	fields	are  their  particular maximum number of characters in
       length, there is no separation between the fields.

       Objects in the archive are always an even number of bytes  long;	 files
       that  are  an  odd  number  of  bytes long are padded with a <newline>,
       although the size in the header does not reflect this.

       The ar utility description requires that	 (when	all  its  members  are
       valid  object files) ar produce an object code library, which the link‐
       age editor can use to extract object modules.  If  the  linkage	editor
       needs  a	 symbol	 table to permit random access to the archive, ar must
       provide it; however, ar does not require a symbol table.

       The BSD -o option was omitted. It is a rare conforming application that
       uses ar to extract object code from a library with concern for its mod‐
       ification time, since this can only be of importance  to	 make.	Hence,
       since  this  functionality  is  not  deemed  important for applications
       portability, the modification time of the extracted files is set to the
       current time.

       There  is at least one known implementation (for a small computer) that
       can accommodate only object files for that  system,  disallowing	 mixed
       object  and  other files. The ability to handle any type of file is not
       only historical practice for most implementations, but is also  a  rea‐
       sonable expectation.

       Consideration  was given to changing the output format of ar -tv to the
       same format as the output of ls -l. This would have  made  parsing  the
       output  of ar the same as that of ls. This was rejected in part because
       the current ar format is commonly used and changes would break histori‐
       cal  usage. Second, ar gives the user ID and group ID in numeric format
       separated by a slash. Changing this to be the user name and group  name
       would  not  be correct if the archive were moved to a machine that con‐
       tained a different user database. Since ar cannot know whether the  ar‐
       chive was generated on the same machine, it cannot tell what to report.

       The text on the -ur option combination is historical practice-since one
       filename can easily represent two different files (for example,	/a/foo
       and  /b/foo),  it is reasonable to replace the file in the archive even
       when the modification time in the archive is identical to that  in  the
       file system.

FUTURE DIRECTIONS
       None.

SEE ALSO
       c99,   date,   fort77,  pax,  strip  the	 Base  Definitions  volume  of
       IEEE Std 1003.1-2001, Chapter 13, Headers,  <unistd.h>  description  of
       {POSIX_NO_TRUNC}

COPYRIGHT
       Portions	 of  this text are reprinted and reproduced in electronic form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       --  Portable  Operating	System	Interface (POSIX), The Open Group Base
       Specifications Issue 6, Copyright (C) 2001-2003	by  the	 Institute  of
       Electrical  and	Electronics  Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE and
       The  Open Group Standard, the original IEEE and The Open Group Standard
       is the referee document. The original Standard can be  obtained	online
       at http://www.opengroup.org/unix/online.html .

IEEE/The Open Group		     2003				AR(1P)
[top]

List of man pages available for OpenSuSE

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net