AR(1) AR(1)
НАЗВАНИЕ
ar - обслуживание мобильных архивов и библиотек
СИНТАКСИС
ar [-][d][r][q][t][p][m][x][v][c][l][s] [позиционирующее_имя]
а_файл [имя ...]
ОПИСАНИЕ
Команда ar предоставляет средства обслуживания группы
файлов, об единенных в один архивный файл. Применяется
главным образом для создания и изменения библиотечных
файлов, используемых редактором связей. Может приме-
няться и для других подобных целей. Магические цепочки
и заголовки файлов состоят из печатаемых ASCII-симво-
лов, так что если в состав архива входят только печата-
емые файлы, то и архив в целом окажется печатаемым.
При создании архива командой ar заголовки файлов стро-
ятся в формате, не зависящем от конкретной машины. Фор-
мат и структура мобильного архива подробно описаны в
ar(4). Таблица имен архива (описанная там же) использу-
ется редактором связей [ld(1)] для сокращения числа
проходов по библиотекам об ектных файлов. Команда ar
создает и поддерживает таблицу имен только при наличии
в архиве хотя бы одного об ектного файла. Таблица имен
в случае ее создания помещается в начале архива в ка-
честве файла с особым именем. Ни ссылка на этот файл,
ни доступ к нему для пользователя невозможны. При соз-
дании или изменении архива командой ar(1) таблица имен
всякий раз перестраивается. Таблицу имен можно перест-
роить принудительно, воспользовавшись описанной ниже
опцией s.
В отличие от командных опций командный ключ составляет
обязательную часть командной строки ar. Ключ (которому
может предшествовать символ -) представляет собой один
из символов набора drqtpmx. Аргументами же ключа могут
служить один или несколько символов из набора vuaibcls.
Позиционирующее_имя - это имя элемента архива, которое
используется в качестве указателя конкретного места ар-
хива, куда должны помещаться другие файлы. А_файл - это
имя архивного файла. Под именами подразумеваются имена
файлов, входящих в архив. Символам, образующим ключ,
приписан следующий смысл:
d Удалить указанные файлы из архива.
r Заменить указанные файлы в архиве. Если в ключе
наряду с r присутствует необязательный символ u,
то замена будет произведена только для тех из ука-
занных файлов, у которых дата последней модифика-
ции превышает соответствующую дату у одноименных
файлов, хранящихся в архиве. Если ключ содержит
признак позиционирования, т.е. один из необяза-
тельных символов abi, то в команде должен при-
сутствовать аргумент позиционирующее_имя и в этом
случае все новые файлы будут помещаться перед (b
или i) или вслед за (a) файлом с таким именем. При
отсутствии признака позиционирования новые файлы
будут помещаться в конец архива.
q Быстро поместить указанные файлы в конец архива.
Использование символов позиционирования недопусти-
мо. Проверка, имеются ли уже в архиве указанные
файлы, командой не осуществляется. Данная возмож-
ность полезна только для того, чтобы избежать
квадратичного роста временных затрат при наращива-
нии больших архивов. Отказ от проверок может, нап-
ротив, повести к росту размеров архивного файла.
t Вывести оглавление архива. Если имена не указаны,
перечисляются все файлы архива; если имена указа-
ны, выводятся только они.
p Напечатать указанные файлы из архива.
m Переместить указанные файлы в конец архива. Если
ключ содержит признак позиционирования, то в ко-
манде должен присутствовать аргумент позиционирую-
щее_имя, и тогда место, куда перемещаются файлы,
будет определяться так же, как и для опции r.
x Извлечь указанные файлы из архива и поместить в
текущий каталог. Если имена не указаны, извлекают-
ся все содержащиеся в архиве файлы. Операция не
изменяет архивный файл.
Аргументам ключа приписан следующий смысл:
v Вывести подробное, файл за файлом, описание проце-
дуры создания нового архивного файла из старого
архива и указанных в команде файлов-компонентов.
При совместном использовании ключа t и аргумента v
выводится подробная информация о каждом файле. При
совместном использовании x и v по мере извлечения
файлов будут выводиться их имена.
c Подавить сообщение, выдаваемое обычно при создании
а_файла.
l Помещать временные файлы в локальный (текущий ра-
бочий) каталог, а не в подразумеваемый временный
каталог TMPDIR.
s Принудительно регенерировать таблицу имен архива,
даже если вызов ar(1) не предусматривает модифика-
ции содержимого архива. Эта команда полезна при
восстановлении таблицы имен после применения к ар-
хиву команды strip(1).
ФАЙЛЫ
TMPDIR/* Временные файлы.
Обычно каталог TMPDIR - это /usr/tmp, однако данное
соглашение можно изменить, присвоив переменной окруже-
ния TMPDIR другое значение [см. tempnam в tmpnam(3S)].
СМ. ТАКЖЕ
ld(1), lorder(1), strip(1).
tmpnam(3S), a.out(4), ar(4) в Справочнике программиста.
ПРИМЕЧАНИЯ
Если один и тот же файл упомянут в списке аргументов
дважды, он может быть дважды и помещен в архив.
AR(4) AR(4)
НАЗВАНИЕ
ar - формат архивного файла
СИНТАКСИС
#include
ОПИСАНИЕ
Команда ar(1) позволяет собрать несколько файлов в один
архивный файл. Архивы используются в основном как биб-
лиотеки объектных файлов, просматриваемые редактором
связей ld(1).
Каждый архив начинается с магической цепочки архива.
#define ARMAG "!\n" /* Магическая цепочка */
#define SAMARG 8 /* Длина магической цепочки */
Архив объектных файлов обычного формата [см.a.out(4)]
включает таблицу имен архива. Она используется редакто-
ром связей ld(1) для определения того, какие элементы
архива должны быть включены в результирующую программу
при редактировании связей. Таблица имен архива (если
она есть) всегда является первым файлом архива, однако
не отображается при выдаче оглавления. Она автоматичес-
ки порождается и корректируется командой ar(1).
За магической цепочкой архива следуют файлы - элементы
архива. Каждый элемент начинается с заголовка следующе-
го формата:
#define ARFMAG "`\n" /* Ограничитель заголовка */
struct ar_hdr { /* Заголовок элемента архива */
char ar_name [16]; /* Имя элемента (в конце /) */
char ar_date [12]; /* Дата последней модификации */
char ar_uid [6]; /* Идентификатор владельца */
char ar_gid [6]; /* Идентификатор группы */
char ar_mode [8]; /* Режим элемента архива */
char ar_size; /* Длина элемента */
char ar_fmag [2]; /* Ограничитель заголовка */
};
Заголовок элемента архива является чисто текстовым.
Числовая информация хранится в десятичном виде, за иск-
лючением ar_mode - восьмеричного режима доступа к эле-
менту архива. Поэтому, если архив состоит из текстовых
файлов, он и в целом является текстовым.
Имя файла в поле ar_name заканчивается символом / и до-
полняется пробелами. Поле ar_date содержит дату модифи-
кации файла на момент его включения в архив. Архивы
обычного формата можно перемещать из системы в систему,
используя команду ar(1). Для переноса архивов специаль-
ных форматов их преобразуют к обычному формату пос-
редством команды conv(1).
Каждый элемент архива начинается с границы четного бай-
та. Для этого между разделами, если нужно, вставляется
символ перевода строки. Длина элемента в поле ar_size
отражает точный размер без учета вставок.
Если архив включает таблицу имен, первый файл архива
имеет имя нулевой длины (ar_name [0] == '/') и содержит
следующую информацию:
1. Количество имен (занимает 4 байта).
2. Массив смещений в архивном файле [занимает (4 *
количество имен) байт].
3. Таблица цепочек символов - имен элементов архива
(занимает остаток файла).
Таблица цепочек (ограниченных нулевым байтом) и массив
смещений содержат равное число элементов. Каждое смеще-
ние связано с соответствующей по порядку цепочкой. В
таблице цепочек перечислены все глобальные имена, опре-
деленные во всех файлах архива. Смещение определяет по-
ложение архивного заголовка файла, содержащего данное
глобальное имя.
СМ. ТАКЖЕ
a.out(4).
ar(1), ld(1), strip(1) в Справочнике пользователя.
ОГРАНИЧЕНИЯ
Команда strip(1) удаляет все элементы таблицы имен. Для
использования редактора связей ld(1) их надо восстано-
вить с помощью команды ar -ts.
|