close

Ар (Юникс)

Перейти к навигации Перейти к поиску

Архиватор ( также известный как ar ) — это инструмент Unix , который поддерживает группы файлов в виде одного файла архива. В настоящее время arон обычно используется для создания и обновления только файлов библиотек , которые использует компоновщик . Их можно использовать для создания всех видов архивов, но обычно они заменяются форматом файла tarдля целей, выходящих за рамки связывания библиотек. arон включен как один из GNU Binutils .

Примеры

Например, чтобы создать архив из файлов class1.o,,, class2.oнужно class3.oиспользовать следующую команду:

ar rcs libclass.a class1.o class2.o class3.o

чтобы скомпилировать программу, которая зависит от, class1.oи class2.oвы class3.oможете сделать:

cc main.c -L. -lкласс

вместо:

cc main.c class1.o class2.o class3.o 

Параметр e указывает компоновщику искать библиотеку "" в текущем каталоге. -L-llibclass.a

Сведения о формате файла

Формат ar никогда не был стандартизирован, последние архивы основаны на общем формате с двумя известными вариантами, BSD и GNU .

Исторически существовали и другие варианты, включая AIX (маленький), AIX (большой) и Coherent, они значительно отличаются от общепринятого формата.

Архивы Deb используют общий формат.

AR-файл начинается с глобального заголовка, за которым следуют заголовок и раздел данных для каждого файла, хранящегося в AR-файле.

Секция данных выравнивается по 2 байтам, если заканчивается нечетным форматом, то заполняется символом "\n".

Глобальный заголовок

Глобальный заголовок — это одно поле, содержащее строку ASCII «! <arch>», за которой следует один управляющий символ LF .

Заголовок файла

Общий формат следующий.

Смещение поля от Смещение поля до Имя поля Формат поля
0 15 Имя файла ASCII
16 27 Дата файла Десятичный
28 33 Идентификатор владельца Десятичный
34 39 Идентификатор группы Десятичный
40 47 Файловый режим восьмеричный
48 57 Размер файла в байтах Десятичный
58 59 Магия заголовка '\ п

Из-за ограничений на длину и формат файла варианты GNU и BSD используют разные методы для достижения расширенных имен файлов.

Вариант BSD

BSD ars хранит расширенные имена файлов, помещая строку «# 1 /», за которой следует длина имени файла, в поле имени файла и добавляя фактическое имя файла к заголовку файла.

Вариант GNU

GNU ars хранит несколько расширенных имен файлов в разделе данных с именем «//», эта запись относится к последующим заголовкам. Заголовок ссылается на расширенное имя файла, сохраняя «/», за которым следует десятичное смещение в начале имени файла в разделе данных расширенного файла.

GNU ar использует '/' для обозначения конца имени файла, это позволяет использовать пробелы без использования расширенного имени файла.

GNU ar использует специальное имя файла «/», чтобы указать, что следующая информация о данных содержит таблицу поиска символов, которая используется в библиотеках ar для ускорения доступа.

Связанные элементы

Внешние ссылки