ar [-]p[mod [relpos] [count]] archive [member...]ar -M [ <mri-script ]
The gnu ar program creates, modifies, and extracts fromarchives. An archive is a single file holding a collection ofother files in a structure that makes it possible to retrievethe original individual files (called members of the archive).
The original files' contents, mode (permissions), timestamp, owner, andgroup are preserved in the archive, and can be restored onextraction.
gnu ar can maintain archives whose members have names of anylength; however, depending on how ar is configured on yoursystem, a limit on member-name length may be imposed for compatibilitywith archive formats maintained with other tools. If it exists, thelimit is often 15 characters (typical of formats related to a.out) or 16characters (typical of formats related to coff).
ar is considered a binary utility because archives of this sortare most often used as libraries holding commonly neededsubroutines.
ar creates an index to the symbols defined in relocatableobject modules in the archive when you specify the modifier s. Once created, this index is updated in the archive whenever armakes a change to its contents (save for the q update operation). An archive with such an index speeds up linking to the library, andallows routines in the library to call each other without regard totheir placement in the archive.
You may use nm -s or nm --print-armap to list this indextable. If an archive lacks the table, another form of ar calledranlib can be used to add just the table.
gnu ar can optionally create a thin archive,which contains a symbol index and references to the original copiesof the member files of the archives. Such an archive is usefulfor building libraries for use within a local build, where therelocatable objects are expected to remain available, and copying thecontents of each object would only waste time and space. Thin archivesare also flattened, so that adding one or more archives to athin archive will add the elements of the nested archive individually. The paths to the elements of the archive are stored relative to thearchive itself.
gnu ar is designed to be compatible with two differentfacilities. You can control its activity using command-line options,like the different varieties of ar on Unix systems; or, if youspecify the single command-line option -M, you can control itwith a script supplied via standard input, like the MRI “librarian”program.
Corrections, suggestions, and new documentation should be posted to the Forum.
The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.