ar [-X32_64] [-]p[модификатор [имя_компонента_архива] [счётчик]] архив [файл...]
ОПИСАНИЕ
GNU ar программа создает и модифицирует архивы, а также извлекает компоненты
из архива. Архив, это одиночный файл содержащий коллекцию других файлов в особом формате, который делает возможным восстановление оригинальных файлов, которые называются компонентами архива.
Содержимое оригинального файла, права доступа, временные метки,
владелец и группа сохраняются в архиве и могут быть восстановлены
при извлечении.
GNU ar может обслуживать архивы, файлы в которых имеют имена любой
длины, однако, в зависимости от того как ar конфигурируется для вашей системы, может быть введено ограничение на длину имени (для совместимости с архивным форматом поддерживаемым другими программами). Если это имеет место, то ограничение обычно составляет 15 символов (обычно для формата a.out) или 16 символов
(обычно для формата coff).
ar является бинарной утилитой, потому что архивы этого сорта очень
часто используют как библиотеки (libraries) содержащие часто употребляющиеся подпрограммы.
Если вы задаете модификатор s, то ar будет создавать индекс для символов определенных в объектных модулях, содержащихся в архиве. Однажды созданный индекс освежается в архиве, когда ar изменяет содержимое этого архива (сохраняется для операции обновления q).
Архив с индексом быстрее присоединяется к библиотеке и позволяет подпрограммам в библиотеке вызывать друг друга вне зависимости от их размещения в архиве.
Вы можете использовать nm -s или nm --print-armap для получения таблицы индекса. Если архив не содержит эту таблицу, то можно использовать ranlib (другую форму ar) для получения данной таблицы.
GNU ar принимает два различных способа передачи аргументов. Вы можете управлять его активностью передавая параметры посредством командной строки, как некоторыми разновидностями ar для UNIX-систем; или, если вы укажете в командной строке единственный параметр -M, при помощи сценария, подаваемого на стандартный ввод, наподобие программы MRI "librarian".
ОПЦИИ
GNU ar позволяет вам смешивать коды операций p и флаги модификатора (mod) в любом порядке, за исключением первого аргумента командной строки.
Если вы желаете, то можете указать первым аргументом командной
строки тире.
Литера p задает операцию для выполнения; она может принимать любые
значения из следующих, однако вы должны указать только одно из них:
d
Удаляет модули из архива. Необходимо задать имена модулей для
удаления как компонент... (member); архив не будет изменен, если не они не заданы.
Если вы задали модификатор v, то ar будет сообщать название каждого удаляемого модуля.
m
Используйте эту операцию для перемещения компонентов в архив.
Порядок компонентов в архиве может отличаться от того, в котором
программы связываются при использовании библиотеки, если символ определён в более чем одном компоненте архива.
Если не заданы модификаторы для "m", то любые имена объектов, которые вы задали как аргумент компонент, перемещаются в конец архива; вы можете использовать модификаторы a, b или i для помещения их вместо конца архива в заданное место.
p
Выводит заданные компоненты архива на стандартный вывод. Если
задан модификатор v, то перед копированием содержимого компонентов на стандартный вывод показываются их имена.
Если вы не задали аргумент компонент, то все файлы архива будут выведены на стандартный вывод.
q
Быстрое добавление; Традиционно добавляет файлы компонент... в конец архива без проверки на замещение.
Модификаторы a, b и iне оказывают эффекта при этой операции: новые компоненты всегда помещаются в конец архива.
Модификатор v принуждает ar сообщать имя каждого добавляемого файла.
Так как весь смысл данной операции в скорости выполнения, то таблица индексов при этом не обновляется, даже если она уже существует; вы можете использовать ar s или ranlib для обновления таблицы индекса символов.
Однако, в очень многих разных системах быстрое добавление приводит к
перегенерации индекса, таким образом GNU ar реализует q как синоним для r.
r
Вставляет файлы компонент в архив (с замещением). Эта операции отличается от q тем, что существующие в архиве компоненты удаляются если их
имена совпадают с добавляемыми.
Если один из файлов заданных в компонент не существует, ar выводит сообщение об ошибке и продолжает работу не затрагивая те компоненты архива, которые носят такое же имя, как у не существующего файла.
По умолчанию новые компоненты добавляются в конец файла, но вы
можете использовать одни из модификаторов a, b или i для того чтобы разместить новые компоненты относительно уже существующих.
Модификатор v при использовании с этой операцией показывает имя каждого добавляемого файла, а в сочетании с a или r показывает, что файл был либо добавлен (а не что удален старый) либо замещен.
t
Показывает таблицу, в которой хранится содержание архива или компоненты..., которые были указаны в качестве параметра и присутствуют в архиве. Обычно показывается только имя компонента архива; если вы также
хотите посмотреть права доступа, временную метку, владельца, группу и
размер, то вы можете это получить использовав модификатор v.
Если вы не задали компонент, то будет показан весь список файлов в архиве.
Если в каком-либо архиве (скажем в b.a) имеется несколько файлов, имеющих одинаковое имя с тем, что вы задали (скажем, fie), то при выполнении ar t b.a fie будет показан только первый встретившийся файл с таким именем; для того чтобы увидеть их все, вы должны выполнить команду ar t b.a.
x
Извлекает компоненты (указанные как компонент) из архива. Вы можете использовать модификатор v для того, чтобы ar показывал имя каждого извлекаемого компонента.
Если вы не задали какие-нибудь компоненты, то из архива будут извлечены файлы.
Нижеперечисленные модификаторы (mod) могут быть использованы непосредственно после p, для определения поведения выполняемых операций.
a
Добавить новые файлы после одного из существующих в архиве компонентов. Если вы используете модификатор a, то имя компонента архива (relpos) должно быть представлено как аргумент перед именем архива.
b
Добавить новый файл перед одним из существующих в архиве компонентов. Если вы используете модификатор b, то имя компонента архива (relpos) должно быть представлено как аргумент перед указанием имени архива (аналогично i).
c
Создать архив. Если заданный архив не существует, то он будет создан при запросе на обновление. Если вы не задали имя архива, но использовали этот модификатор, то будет выдано предупреждающее сообщение.
f
Урезает имена в архиве. Обычно GNU ar работает с именами файлов любой длины. Это может способствовать созданию архива, несовместимого с ar для некоторых других систем. Если эта проблема вас затрагивает, то данный модификатор может быть использован для обрезания имен файлов при помещении их в архив.
i
Вставить новые файлы перед существующим в архиве компонентом. Если вы используете модификатор i, то имя компонента архива (relpos) должно быть представлено как аргумент перед именем архива (аналогично b).
l
Этот модификатор допускается, но не используется.
N
Использует параметр счетчик (count). Используется в случае, если в архиве имеется несколько компонентов с одним и тем же именем. Извлекает или удаляет указанное имя из архива заданное счётчиком количество раз.
o
Восстанавливает оригинальные даты компонентов архива при их извлечении. Если не использовать этот модификатор, то файлы будут извлечены с текущей датой и временем.
P
Использует полное имя файла при сравнении имен в архиве. GNU ar может не создавать архив с полным именем (такие архивы не соответствуют
стандарту POSIX), но другие программы создания архивов могут так делать.
Данная опция будет заставлять GNU ar сравнивать имена файлов, используя их полные имена, что может быть удобным при извлечении одиночного файла из архива, созданного другой программой.
s
Записывает индекс объектного файла в архив или, если он существует,
обновляет его, даже если нет других изменений в архиве. Вы можете
использовать этот модификатор как в сочетании с другими операциями, так и самостоятельно. Запуск ar s эквивалентен запуску ranlib.
S
Не генерировать таблицу символов архива. Это может поднять скорость
построения большой библиотеки, если её построение производится в несколько этапов.
Получившийся в итоге архив не может быть использован компоновщиком. Для создания таблицы символов вы должны опустить модификатор S, на последнем этапе выполнения ar или выполнить ranlib над данным архивом.
u
Обычно, ar r... помещает все перечисленные файлы в архив. Если хотите вставить только те из них, которые отличаются от уже имеющихся в архиве, то используйте данный модификатор. Модификатор u допускается только для операции r (замещение). В частности не допускается использование комбинации qu, так как проверка временных меток привела бы к потери скорости получаемой от использования q.
v
Этот модификатор включает режим выдачи подробностей выполняемых операций. Многие операции выдают такую дополнительную информацию, как имена обрабатываемых файлов, если присутствует модификатор v.
V
Этот модификатор показывает версию ar.
ar игнорирует начальную опцию, имеющую синтаксис -X32_64, для совместимости с AIX. Поведение производимое этой опцией является значением по умолчанию для GNU ar. ar не поддерживает любую из других -X опций; в частности он не поддерживает -X32, которая является значением по умолчанию для AIX-версии ar.
Предоставляются права на размножение и распространение точных копий
этого документа на условиях GNU Free Documentation License, Версии 1.1 или любой более поздней версии, опубликованной Free Software Foundation (Фондом Свободного Программного Обеспечения); без Инвариантных Разделов, без Текстов с титульной и оборотной страниц Обложки. Копия лицензии включена в раздел, озаглавленный "GNU Free Documentation License".