Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

AR(4)

НАЗВАНИЕ
ar - формат архивного файла

СИНТАКСИС

#include <ar.h>

ОПИСАНИЕ
Команда ar(1) позволяет собрать несколько файлов в один архивный файл. Архивы используются в основном как библиотеки об ектных файлов, просматриваемые редактором связей ld(1).

Каждый архив начинается с магической цепочки архива.

#define ARMAG "!<arch>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];  /* Ограничитель заголовка */
};

1 Заголовок элемента архива является чисто текстовым. Числовая информация хранится в десятичном виде, за исключением 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.


  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте