Расширение имени файла | none,.o,.so |
---|---|
Разработано | AT&T |
Тип формата | Двоичный, исполняемый, объект, разделяемые библиотеки |
a.out- это формат файла, используемый в более старых версиях Unix-подобных компьютерных операционных систем для исполняемых файлов, объектного кода, а в более поздних системах - разделяемые библиотеки. Это сокращенная форма «ассемблер вывод», имя файла вывода ассемблера Кена Томпсона PDP-7. Впоследствии этот термин был применен к формату результирующего файла, чтобы контрастировать с другими форматами объектного кода.
"a.out" остается именем выходного файла по умолчанию для исполняемых файлов, созданных некоторыми компиляторами и компоновщиками, когда выходное имя не указано, даже если созданные файлы на самом деле не в формате a.out.
Формат a.out для PDP-7, аналогичный формату a.out, используемому в PDP-11, появился в первое издание UNIX. Он был заменен форматом COFF в AT&T Unix System V, который, в свою очередь, был заменен форматом ELF в System V Release 4.
Хотя Berkeley Unix продолжал использовать формат a.out в течение некоторого времени, современные BSD-системы с тех пор перешли на ELF. NetBSD / i386 формально переключился с a.out на ELF в версии 1.5 (декабрь 2000 г.). FreeBSD / i386 перешла на ELF во время перехода с 2.2 на 3.0 (октябрь 1998 г.).
MINIX 3 переключился на ELF в версии 3.2.0.
Linux также использовал a.out до ядра 1.2 (март 1995 г.), когда он был заменен ELF для этой платформы. (Поддержка ELF была добавлена в экспериментальное ядро 1.1.52.) Переход Linux на ELF был более или менее вынужденным из-за сложной природы построения разделяемых библиотек a.out на этой платформе, что включало необходимость регистрации виртуального адресного пространства по адресу Библиотека находилась в центральном офисе, поскольку a.out ld.so в Linux не мог перемещать разделяемые библиотеки. Различные варианты BSD могли продолжать использовать двоичные файлы a.out еще долго после того, как Linux был вынужден перейти на ELF, из-за несколько более гибкого характера формата a.out BSD по сравнению с Linux. Формат файла a.out в Linux устарел с выпуском ядра Linux 5.1.
Файл a.out поддержка информации debug осуществляется с помощью специальных записей в таблице символов, называемых stabs. Формат stabs также использовался во многих вариантах COFF и ELF.