Русская Википедия:A.out

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Шаблон:Заголовок со строчной буквы Шаблон:Файловый формат a.out (от assembler output — вывод ассемблера) — формат исполняемых файлов, объектного кода и, позднее, разделяемых библиотек в некоторых (старых) версиях UNIX. Название a.out впервые было использовано Кеном Томпсоном в качестве названия файлов, продуцируемых его ассемблером для PDP-7 в 1968 году[1]. Впоследствии это название закрепилось за форматом продуцируемых файлов для отличия от других форматов объектных файлов.

Формат a.out использовался в ранних UNIX-системах, и со временем был заменён сперва на COFF в AT&T Unix System V, а тот, в свою очередь, на формат ELF в Unix System V Release 4, который ныне используется в большинстве UNIX- и даже некоторых не UNIX-подобных операционных системах.

Операционные системы семейства BSD использовали a.out в течение некоторого времени. Так, NetBSD/i386 используют ELF-формат начиная с версии 1.5, FreeBSD/i386 — с версии 3.0. Расширенная версия этого формата a.outb использовалась группой BSD-совместимых операционных систем (NetBSD, FreeBSD и OpenBSD). Компилятор NASM может генерировать файлы обоих форматов, если указать ключ -f aout или -f aoutb. Шаблон:Уточнить

Linux использовал a.out до версии ядра 1.2 (поддержка ELF впервые была добавлена в экспериментальную ветку 1.1.52), а с версии 5.19 более не поддерживается. Потребность перехода Linux на ELF была частично вызвана сложностями сборки разделяемых библиотек в a.out формате на этой платформе, включая необходимость регистрации адресного пространства, в которое библиотека должна была быть загружена, проистекавшая из неспособности компоновщика ld.so для a.out перемещать динамические библиотеки в памяти, в отличие от систем BSD, где использовался более гибкий вариант формата.[2][3][4]

Minix 3 перешёл на ELF в версии 3.2.0.

a.out хранит отладочную информацию в формате STABS, который позднее был использован в различных вариантах COFF и ELF.

Компилятор GCC по умолчанию выдаёт файл с именем a.out, если не используется опция -o[5], но как правило, уже не в этом формате[6].

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Форматы исполняемых файлов

  1. Шаблон:Harvtxt: «Thompson’s PDP-7 assembler outdid even DEC’s in simplicity; it evaluated expressions and emitted the corresponding bits. There were no libraries, no loader or link editor: the entire source of a program was presented to the assembler, and the output file—with a fixed name—that emerged was directly executable. (This name, a.out, explains a bit of Unix etymology; it is the output of the assembler. Even after the system gained a linker and a means of specifying another name explicitly, it was retained as the default executable result of a compilation.)»
  2. Шаблон:Статья. — «When introducing shared libraries certain design decisions had to be made to work in the limitations of a.out. (...) For all these reasons and more, Linux converted early on to using ELF (Executable Linkage Format) as the binary format.».
  3. Шаблон:Cite web
  4. Шаблон:Cite web
  5. gcc(1) — Linux man page Шаблон:Wayback Шаблон:Ref-en
  6. В то же время в системе Cygwin имя файла по умолчанию a.exe, соответствующее стандартному расширению .EXE для исполняемых файлов Windows.