Jump to content

а.аут

а.аут
Расширение имени файла
нет, .о, .so, .out
Магическое число 0407, 0410, 0413 (в восьмеричном формате) ; 0107, 0108, 010B (в шестнадцатеричном формате)
Разработано АТ&Т
Тип формата Двоичные , исполняемые файлы , объекты , общие библиотеки

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

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

Поддержка формата a.out была удалена в ядре Linux версии 5.18. [3]

История [ править ]

Формат a.out для PDP-7 , аналогичный формату a.out , используемому в PDP-11 , появился в первой редакции UNIX. [4] Он был заменен форматом COFF в AT&T Unix System V , который, в свою очередь, был заменен форматом ELF в System V Release 4 . Файлы a.out идентифицируются магическими числами с восьмеричными кодами 0407, 0410 или 0413. [5]

Хотя Berkeley Unix некоторое время продолжала использовать формат a.out , современные системы BSD с тех пор перешли на ELF. NetBSD/i386 формально перешел с a.out на ELF в выпуске 1.5 (декабрь 2000 г.). FreeBSD/i386 перешла на ELF в качестве стандартного формата во время перехода с 2.2 на 3.0 в 1998 году, однако поддержка a.out осталась в системе. [6]

MINIX 3 перешел на ELF в версии 3.2.0 (февраль 2012 г.).

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

Отладка [ править ]

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

См. также [ править ]

Ссылки [ править ]

  1. ^ Ричи (1993) : «Ассемблер PDP-7 Томпсона превзошел даже DEC по простоте; он оценивал выражения и выдавал соответствующие биты. Не было ни библиотек, ни загрузчика, ни редактора ссылок: ассемблеру был представлен весь исходный код программы, и возникший выходной файл с фиксированным именем был непосредственно исполняемым (это имя, a.out, немного объясняет этимологию Unix; это результат работы ассемблера. Даже после того, как система получила компоновщик и средства. если явно указать другое имя, оно будет сохранено как исполняемый результат компиляции по умолчанию.)"
  2. ^ Вуд, Руперт (8 апреля 2002 г.). «Что делать с a.out» . gcc-help (список рассылки) . Проверено 28 апреля 2007 г.
  3. ^ «Выход на выход [LWN.net]» . lwn.net . Проверено 12 сентября 2022 г.
  4. ^ Ричи, Деннис (3 ноября 1971 г.). a.out — выходные данные ассемблера и редактора ссылок (PDF) . Лаборатории Белла . Проверено 24 ноября 2006 г.
  5. ^ "страница a.out из раздела 5 8-го руководства unix" . man.cat-v.org . Проверено 12 октября 2022 г.
  6. ^ Лукас, Майкл В. (2019). Absolute FreeBSD: полное руководство по FreeBSD (3-е изд.). Сан-Франциско. п. 408. ИСБН  9781593278922 . {{cite book}}: CS1 maint: отсутствует местоположение издателя ( ссылка )
  7. ^ Барлоу, Дэниел (14 июля 1996 г.). «Linux ELF HOWTO (v1.29)» . Архивировано из оригинала 13 июля 2004 года . Проверено 28 марта 2008 г.
  8. ^ Дреппер, Ульрих (20 августа 2006 г.). «Как писать общие библиотеки» (PDF) . 4.0. Раздел 1.1 (Немного истории). Архивировано (PDF) из оригинала 16 июня 2007 года . Проверено 20 июня 2007 г. При внедрении разделяемых библиотек необходимо было принять определенные проектные решения, чтобы работать с ограничениями a.out. (...) По всем этим и многим другим причинам Linux рано перешел на использование ELF (формата исполняемых ссылок) в качестве двоичного формата. {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  9. ^ Янгдейл, Эрик (1 апреля 1995 г.). «Формат объектного файла ELF: Введение» . Архивировано из оригинала 10 марта 2009 года . Проверено 6 мая 2012 г. (...) вполне возможно разработать реализации разделяемой библиотеки, которые работают с a.out. Текущие разделяемые библиотеки Linux, безусловно, являются одним из примеров; Другим примером являются общие библиотеки в стиле SunOS, которые в настоящее время используются BSD-du-jour. Общие библиотеки в стиле SunOS содержат во многом те же концепции, что и общие библиотеки ELF (...)
  10. ^ «Мифы о БСД» . Архивировано из оригинала 17 апреля 2007 года . Проверено 10 апреля 2007 г. Никаких серьезных причин для перехода раньше не было. В частности, во FreeBSD не было (и нет) проблем с созданием разделяемых библиотек, которые стимулировали переход Linux с a.out на ELF.
  11. ^ «Ядро Linux наконец прекращает поддержку A.out» . Фороникс . Проверено 1 сентября 2020 г.
  12. ^ Петков, Борислав (5 марта 2019 г.). «x86: прекращена поддержка a.out» . Проверено 5 марта 2019 г. Linux поддерживает двоичные файлы ELF уже около 25 лет. Дамп ядра a.out значительно ухудшился, и потребуется некоторое исправление, чтобы снова привести его в форму, но, учитывая, что даже цепочки инструментов не могут создавать исполняемые файлы a.out в конфигурации по умолчанию, давайте объявим поддержку a.out устаревшей и удалим ее через пару выпусков. , вместо.
  13. ^ Корбет, Джонатан (22 мая 2022 г.). «Выпущено ядро ​​5.18» . ЛВН . Проверено 22 мая 2022 г. удалены последние остатки поддержки a.out

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b1de9cddc055c27a5c0e02360fad362e__1710759840
URL1:https://arc.ask3.ru/arc/aa/b1/2e/b1de9cddc055c27a5c0e02360fad362e.html
Заголовок, (Title) документа по адресу, URL1:
a.out - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)