А. выход - a.out

а. выход
Расширение имени файла
нет, .o, .so
РазработанAT&T
Тип форматаДвоичный, исполняемый файл, объект, общие библиотеки

а. выход это формат файла используется в более старых версиях Unix-подобный компьютер операционные системы за исполняемые файлы, объектный код, а в более поздних системах общие библиотеки. Это сокращенная форма слова "ассемблер output ", имя файла вывода Кен Томпсон с PDP-7 ассемблер.[1] Впоследствии этот термин был применен к формату полученного файла, чтобы контрастировать с другими форматами объектного кода.

"a.out" остается именем выходного файла по умолчанию для исполняемых файлов, созданных определенными компиляторы и линкеры когда имя вывода не указано, даже если созданные файлы на самом деле не в формате a.out.[2]

История

An а. выход формат для PDP-7, аналогично а. выход формат, используемый на PDP-11, появилась в первой редакции UNIX.[3]Он был заменен COFF формат в AT&T Unix System V, который, в свою очередь, был заменен ELF формат в System V Выпуск 4.

Хотя Беркли Unix продолжал использовать а. выход формат. С тех пор современные BSD-системы перешли на ELF. NetBSD / i386 официально переключился с а. выход в ELF в версии 1.5 (декабрь 2000 г.). FreeBSD / i386 перешел на ELF во время перехода с 2.2 на 3.0 (октябрь 1998 г.).

МИНИКС 3 перешел на ELF в версии 3.2.0.

Linux также использовал а. выход до ядра 1.2 (март 1995 г.), когда он был заменен ELF и для этой платформы.[4](Поддержка ELF была добавлена ​​в экспериментальное ядро ​​1.1.52.) Переход Linux на ELF был более или менее вынужденным из-за сложной природы сборки а. выход разделяемые библиотеки на этой платформе, что включало в себя необходимость регистрации виртуального адресного пространства, в котором библиотека находилась в центральном органе власти, в качестве а. выход ld.so в Linux не удалось переместить разделяемые библиотеки.[5]Различные варианты BSD могли продолжать использовать а. выход двоичные файлы спустя много времени после того, как Linux был вынужден перейти на ELF из-за несколько более гибкого характера BSD а. выход формат по сравнению с Linux.[6][7] Формат файла a.out в Linux устарел с выпуском ядра Linux 5.1.[8][9]

Использовать

Связывание

Отладка

В а. выход Поддержка для отлаживать информация осуществляется с помощью специальных записей в таблице символов, называемых удары. Формат ударов также использовался во многих COFF и ELF вариации.

Смотрите также

Рекомендации

  1. ^ Ричи (1993): "Ассемблер PDP-7 Томпсона превзошел даже ассемблер DEC по простоте; он оценивал выражения и выдавал соответствующие биты. Не было ни библиотек, ни загрузчика, ни редактора ссылок: весь исходный код программы был представлен ассемблеру, а выходной файл - с фиксированным именем - появившееся было непосредственно исполняемым (это имя, a.out, немного объясняет этимологию Unix; это результат работы ассемблера. Даже после того, как система получила компоновщик и средство для явного указания другого имени, оно сохранялось как исполняемый результат по умолчанию при компиляции.) "
  2. ^ Руперт Вуд (8 апреля 2002 г.). "Что делать с a.out". gcc-help (Список рассылки). Получено 28 апреля 2007.
  3. ^ Деннис Ричи (3 ноября 1971 г.). a.out - вывод ассемблера и редактора ссылок (PDF). Bell Labs. Получено 24 ноября 2006.
  4. ^ Дэниел Барлоу (14 июля 1996 г.). "Linux ELF HOWTO (v1.29)". Архивировано из оригинал 13 июля 2004 г.. Получено 28 марта 2008.
  5. ^ Ульрих Дреппер (20 августа 2006 г.). «Как писать общие библиотеки» (PDF). 4.0. Раздел 1.1 (Немного истории). В архиве (PDF) из оригинала 16 июня 2007 г.. Получено 20 июн 2007. При внедрении совместно используемых библиотек необходимо было принять определенные дизайнерские решения, чтобы они работали в условиях ограничений a.out. (...) По всем этим и другим причинам Linux на раннем этапе перешел на использование ELF (Executable Linkage Format) в качестве двоичного формата. Цитировать журнал требует | журнал = (помощь)
  6. ^ Эрик Янгдейл (1 апреля 1995 г.). «Формат объектного файла ELF: Введение». В архиве из оригинала 10 марта 2009 г.. Получено 6 мая 2012. (...) возможно разработать реализации разделяемых библиотек, которые работают с a.out. Текущие разделяемые библиотеки Linux, безусловно, являются одним из примеров; другой пример - разделяемые библиотеки в стиле SunOS, которые в настоящее время используются BSD-du-jour. Общие библиотеки в стиле SunOS содержат множество тех же концепций, что и разделяемые библиотеки ELF (...)
  7. ^ "Мифы BSD". В архиве из оригинала 17 апреля 2007 г.. Получено 10 апреля 2007. Раньше насущных причин для перехода не было. В частности, FreeBSD не имела (и не имеет) проблем со сборкой разделяемых библиотек, которые стимулировали преобразование Linux с a.out в ELF.
  8. ^ «Ядро Linux наконец прекращает поддержку A.out - Phoronix». www.phoronix.com. Получено 1 сентября 2020.
  9. ^ Борислав Петков (5 марта 2019). "x86: прекращение поддержки a.out". Получено 5 марта 2019. Linux поддерживает двоичные файлы ELF уже около 25 лет. coredumping a.out довольно сильно изменился и потребует некоторого исправления, чтобы вернуть его в форму, но, учитывая, что даже инструментальные цепочки не могут создавать исполняемые файлы a.out в его конфигурации по умолчанию, давайте откажемся от поддержки a.out и удалим его через пару выпусков , вместо.

внешняя ссылка