Ar (Unix)
ar, (скорочення від англ. archiver) -- утиліта Unix-подібних операційних системах, призначена для групування файлів у вигляді єдиного архівного файлу . Сьогодні У Linux Standard Base (LSB) Деталі формату файлу![]() Формат ar ніколи не був стандартизований; сучасні архіви базуються на загальному форматі з двома основними варіантами, BSD і System V. Історично існували інші варіанти включаючи V6, V7, AIX (маленький і великий) і Coherent, які суттєво відрізняються від загального формату. Загальний формат використовується також у архівах Debian (.deb). Файл ar починається з глобального заголовка, за яким йдуть заголовок і розділ даних для кожного файлу, що зберігається в ар-файлі. Кожен розділ даних вирівняний по 16-бітній границі. Якщо він закінчується на непарному зміщенні, заповнювачем слугує символ нового рядка ('\n', 0x0A). Сигнатура файлуПідпис файлу — це одне поле, що містить "магічну ASCII-послідовність" Заголовок файлуКожен файл, що зберігається в архіві ar, містить заголовок файлу для зберігання інформації про файл. Загальний формат виглядає наступним чином. Числові значення закодовано в ASCII, і всі значення доповнюються праворуч пробілами ASCII (0x20).
Оскільки заголовки містять лише друковані символи ASCII і переводи рядків, архів, що містить лише текстові файли, все одно виглядає як текстовий файл. Члени вирівнюються за парними межами байтів. «Кожен елемент архівного файлу починається з парної межі байтів; якщо необхідно, між файлами вставляється новий рядок. Тим не менше, наведений розмір відображає фактичний розмір файлу без урахування відступів». [4] Через обмеження довжини і формату імен файлів у варіантах GNU і BSD були розроблені різні методи зберігання довгих імен файлів. Незважаючи на те, що загальний формат не страждає від проблеми 2038 року, багато реалізацій утиліти ar несумісні з прийнятим зараз 64-розрядним кодуванням дати і, можливо, їх доведеться змінити у майбутньому, щоб правильно обробляти лічильники секунд, що перевищують 2147483647. Опис цих розширень можна знайти в libbfd. [5] Залежно від формату, багато реалізацій ar включають глобальну таблицю символів (вона ж armap, каталог або індекс) для швидкого зв’язування без необхідності сканувати весь архів на наявність символу. POSIX розпізнає цю функцію та вимагає, щоб реалізації ar мали опцію BSD варіантBSD ar зберігає імена файлів, доповнені пробілами ASCII справа. Це спричиняє проблеми з пробілами всередині імен файлів. 4.4BSD ar зберігає розширені імена файлів, розміщуючи рядок "#1/", за яким слідує довжина імені файлу в полі імені файлу, і зберігаючи справжню назву файлу перед розділом даних. Утиліта BSD ar традиційно не займається створенням глобальної таблиці пошуку символів і делегує це завдання окремій утиліті під назвою ranlib, яка вставляє специфічний для архітектури файл під назвою Оскільки POSIX додав вимогу для опції Варіант System V (або GNU)Програма ar у Unix System V використовує символ '/' (0x2F) для позначення кінця назви файлу; це дозволяє використовувати пробіли без використання розширеного імені файлу. Потім він зберігає кілька розширених імен файлів у розділі даних файлу з назвою "//", на цей запис посилаються майбутні заголовки. Заголовок посилається на розширене ім’я файлу, зберігаючи «/» з наступним десятковим зміщенням на початку імені файлу в розділі даних розширеного імені файлу. Сам формат цього файлу «//» — це просто список довгих імен файлів, кожне з яких розділено одним або кількома символами LF. Зауважте, що десяткові зміщення – це кількість символів, а не номер рядка чи рядка у файлі "//". Зазвичай це другий запис у файлі після таблиці символів, яка завжди є першою. System V ar використовує спеціальну назву файлу "/", щоб позначити, що наступний запис даних містить таблицю пошуку символів, яка використовується в бібліотеках ar для прискорення доступу. Ця таблиця символів складається з трьох частин, які записуються разом як безперервні дані.
Деякі системи System V не використовують формат, описаний вище, для таблиці пошуку символів. Для таких операційних систем, як HP-UX 11.0, ця інформація зберігається в структурі даних на основі формату файлу SOM . Спеціальний файл "/" не завершується певною послідовністю; кінцем вважається ситуація, коли було прочитано ім'я останнього символу. Щоб подолати обмеження розміру файлу в 4 ГіБ, деякі операційні системи, такі як Solaris 11.2 і GNU, використовують таблицю пошуку варіантів. Замість 32-розрядних цілих чисел у таблицях пошуку символів використовуються 64-розрядні цілі числа. Рядок "/SYM64/" замість "/" використовується як ідентифікатор для цієї таблиці [9] Варіант WindowsВаріант Windows (PE/COFF) базується на варіанті SysV/GNU. Перший запис "/" має такий же макет, що й таблиця символів SysV/GNU. Другий запис — ще один «/», розширення Microsoft, яке зберігає розширену таблицю перехресних посилань символів. Ця таблиця відсортована і використовує цілі числа little-endian. [10] Третій запис — необов’язкові дані довгого імені «//», як у SysV/GNU. [11] «Тонкий архів»Версія Приклад використанняДля створення архіву з файлів class1.o , class2.o та class3.o можна дати таку команду: ar rcs libclass.a class1.o class2.o class3.o Компонувальники Unix, які зазвичай викликаються компілятором C cc main.c libclass.a або (якщо libclass.a розміщено в стандартному бібліотечному шляху, наприклад/usr/local/lib ) cc main.c -lclass або (під час зв'язування) ld ... main.o -lclass ... те саме, що: cc main.c class1.o class2.o class3.o Див. такожСписок літератури
Зовнішні посилання
|
Portal di Ensiklopedia Dunia