unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (HP-UX-11.11)
Page:
Section:
Apropos / Subsearch:
optional field



 ar(4)								       ar(4)




 NAME
      ar - common archive file format

 SYNOPSIS
      #include <&lt&lt&lt;ar.h>&gt&gt&gt;

 DESCRIPTION
      The ar 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.

	   #define  ARMAG   "!<&lt&lt&lt;arch>&gt&gt&gt;\n"	     /* magic string */
	   #define  SARMAG  8		     /* length of 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
      following format:

	   #define  ARFMAG	 "`\n"	  /* header trailer string */
	   #define  AR_NAME_LEN	 16	  /* ar_name size, includes `/' */

	   struct ar_hdr   /* archive file member header - printable ascii */
	   {
	       char    ar_name[16];    /* file member name - `/' terminated */
	       char    ar_date[12];    /* file member date - decimal */
	       char    ar_uid[6];      /* file member user id - decimal */
	       char    ar_gid[6];      /* file member group id - decimal */
	       char    ar_mode[8];     /* file member mode - octal */
	       char    ar_size[10];    /* file member size - decimal */
	       char    ar_fmag[2];     /* ARFMAG - string to end header */
	   };

      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.

      The contents of the ar_name field are slash (/) terminated and blank-
      padded.  The ar_date 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 ar
      is used.	Note that older versions of ar did not use the common
      archive format, and those archives 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.




 Hewlett-Packard Company	    - 1 -   HP-UX Release 11i: November 2000






 ar(4)								       ar(4)




      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., ar_name[0] == '/' and ar_name[1] == ' ').	 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 ar.

      If a member with a file name greater than 15 bytes exists within the
      archive, then the archive will also contain an additional special
      member to store the long file name string table. The special string
      table member has a zero length name where ar_name[0] == '/' and
      ar_name[1] == '/'.

      If a special string table exists, it will precede all non-special
      archive 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 ar_name 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 thisverylongfilename.o contains /0 in the
      ar_name field. This value represents the offset into the string table.
      The member name yetanotherlongfilename.o contains /27 in the ar_name
      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  |
	    |_______________





 Hewlett-Packard Company	    - 2 -   HP-UX Release 11i: November 2000






 ar(4)								       ar(4)




 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
      strip removes the archive symbol table member from the archive (see
      strip(1)).  The archive symbol table must be restored by using the -ts
      option of the ar command or the ranlib(1) command before the archive
      can be used with the ld link editor.





































 Hewlett-Packard Company	    - 3 -   HP-UX Release 11i: November 2000