Unix-like systems represent static libraries as
.a archives. A
.a archive has a header and a collection of .o files (relocatable object files) and their metadata. One may add others files to
.a but that is almost assuredly a bad thing. As a special case,
ar r a.a b.a merge members of
The original linker designers noticed that for many programs not every member was needed, so they invented the interesting and confusing archive member extraction rule. See Symbol processing#Archive processing for details.