Что такое формат файла A?
Файлы .a содержат системные библиотеки, используемые разработчиками программного обеспечения. Такие файлы обычно встречаются в Unix-подобных системах, включая Linux и macOS, в то время как системы Microsoft Windows используют файлы .LIB для тех же целей. Файлы .a предоставляют скомпилированные функции и заголовки, на которые могут ссылаться исходные файлы. Библиотеки с расширением .a обычно называют статическими библиотеками.
Технически файл .a представляет собой архив формата ar: контейнер, содержащий один или несколько скомпилированных объектных файлов (.o). В Linux это файлы .o формата ELF; в macOS - объекты Mach-O. Каждый архив .a начинается с 8-байтовой ASCII-сигнатуры !<arch>, за которой следует символ новой строки, что делает его узнаваемым для инструментов анализа файлов. Вы можете просмотреть содержимое архива с помощью ar t libname.a и проверить экспортируемые символы с помощью nm libname.a.
Компьютерные программы используют два типа библиотек ресурсов: статические и динамические. Статические библиотеки (.lib или .a), как правило, больше динамических, так как их код компилируется непосредственно в целевую программу во время компоновки. Динамические библиотеки - файлы .SO в Linux, .dylib в macOS - подключаются к программе при её запуске или в процессе выполнения. Разработчики могут настраивать свой код для работы с различными динамически подключаемыми библиотеками.
Утилита ar (часть GNU Binutils в Linux) является стандартным инструментом для создания и обслуживания архивов .a. Поскольку компоновщик извлекает только те объектные файлы, которые ему необходимы, неиспользуемый код из статической библиотеки не включается в конечный исполняемый файл.
Безопасность и защита
РИСК: LOWФайл .a - это данные для этапа сборки, а не то, что запускает ОС, поэтому он представляет мало прямого риска для конечных пользователей. Для разработчиков проблемой является доверие к цепочке поставок: вредоносная или подделанная статическая библиотека встраивает свой код прямо в вашу программу, поэтому используйте файлы .a только из доверенных источников SDK и проверяйте контрольные суммы/подписи. Файл .a с исходным кодом Ada является обычным текстом и безопасен для открытия.
Детали формата
в двух словах- Файл исходного кода Ada - Некоторые компиляторы/проекты Ada используют .a (а также .ada/.adb/.ads) для текстового исходного кода Ada - это значение зафиксировано в устаревших базах данных, но оно встречается гораздо реже, чем статическая библиотека.
Программы, открывающие файлы A
Технические подробности
глубокая спецификация| Сигнатура файла | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) по смещению 0 |
| Формат архива | ar (Unix Archiver) - один и тот же формат контейнера в системах Linux, macOS и BSD |
| MIME-тип | application/x-archive |
| Тип вложенных файлов (Linux) | Перемещаемые объектные файлы ELF (.o) |
| Тип вложенных файлов (macOS) | Перемещаемые объектные файлы Mach-O (.o) |
| Размер заголовка каждого файла | 60 байт - ASCII-поля: имя (16 Б), метка времени (12 Б), UID (6 Б), GID (6 Б), права доступа (8 Б), размер (10 Б), маркер конца (2 Б) |
| Элемент индекса символов | GNU ar использует элемент с именем «/»; BSD/macOS ar использует «__SYMDEF» - сопоставляет имена символов со смещениями элементов для быстрой компоновки |
| Соглашение об именовании | lib<имя>.a - например, libz.a, libssl.a, libpthread.a; префикс «lib» требуется для флага компоновщика -l |
| Сжатие | Отсутствует - объектные файлы хранятся как есть, без сжатия |
| Поведение при компоновке | Компоновщик извлекает только те элементы .o, которые разрешают неопределенные символы; неиспользуемые элементы не включаются в выходной исполняемый файл |
| Стандартный инструмент создания | ar (GNU Binutils в Linux; LLVM ar / BSD ar в macOS); вызывается как: ar rcs libname.a file1.o file2.o |
| Инструмент проверки символов | nm - выводит список экспортируемых, неопределенных и локальных символов; например, nm libname.a |
| Инструмент проверки содержимого | ar t libname.a выводит список элементов; ar x libname.a извлекает их; objdump / otool дизассемблирует код элементов |
| Эквивалент в Windows | Статическая библиотека .lib (формат COFF/PE); кросс-компиляторы для Windows, такие как MinGW, также создают файлы .a |
| Типичный диапазон размеров | Варьируется от нескольких КБ (небольшая вспомогательная библиотека) до сотен МБ (например, libclang_rt.a или полная libc.a) |
| Выпущен | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Открыть стандартное | Да · без роялти |
| Спецификация | en.wikipedia.org |
Конвертации A
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах A.