Кіріспе

Ескі Unix орындалатын файл форматы

a. out – Unix-тің ескі нұсқаларында, мысалы, компьютерлік операциялық жүйелерде орындалатын файлдар, объектілік код және кейінгі жүйелерде бөлісілген кітапханалар үшін қолданылатын файл форматы. Бұл "assembler output" ("құрастырушы шығысы") деген сөздің қысқартылған түрі, Кен Томпсонның PDP 7 құрастырушысының шығыс файл атауы. Бұл термин кейіннен объектілік кодтың басқа форматтарынан ерекшелендіру үшін алынған файлдың форматына қолданылды. "a. out" кейбір компиляторлар мен линкерлер жасаған орындалатын файлдар үшін, егер шығыс атауы көрсетілмесе, әдепкі файл атауы болып қала береді, тіпті жасалған файлдар нақтыда a. out форматында болмаса да. a. out форматына қолдау Linux ядросының 5.18 нұсқасында жойылды.

Тарих

PDP 7-ге арналған a.out форматы, PDP 11-де қолданылатын a.out форматына ұқсас, UNIX-тің бірінші басылымында пайда болды. Ол AT&T Unix System V-де COFF форматымен алмастырылды, ал ол өз кезегінде System V Release 4-де ELF форматымен алмастырылды. a.out файлдары 0407, 0410 немесе 0413 октал кодтары бар сиқырлы сандармен сәйкестендіріледі. Беркли Unix біраз уақыт бойы a.out форматын пайдалануды жалғастырғанмен, қазіргі заманғы BSD жүйелері ELF форматына көшті. NetBSD/i386 ресми түрде a.out-тан ELF-ке 1.5 нұсқасында (желтоқсан 2000) ауысты. FreeBSD/i386 1998 жылы 2.2-ден 3.0-ға өту кезінде стандартты формат ретінде ELF-ке ауысты, бірақ a.out қолдауы жүйеде сақталды. MINIX 3 3.2.0 нұсқасында (ақпан 2012) ELF форматына көшті. Linux та 1.2 ядросына дейін (наурыз 1995) a.out-ты ғана қолданды, содан кейін ол осы платформа үшін ELF форматымен алмастырылды. ELF қолдауы 1.1.52 эксперименталды ядросында қосылды. Linux-тың ELF-ке ауысуы, осы платформада a.out ортақ кітапханаларын құрудың қиындығына байланысты болды, бұл кітапхана орналасқан виртуалды мекенжай кеңістігін орталық органға тіркеуді қажет етті, себебі Linux-тағы a.out ld.so ортақ кітапханаларды қайта орналастыра алмады. BSD-нің әртүрлі нұсқалары Linux ELF-ке ауысуға мәжбүр болғаннан кейін ұзақ уақыт бойы a.out бинарларын қолдана алды, себебі BSD a.out форматы Linux-қа қарағанда икемдірек болды. Linux-тағы a.out файл форматы 5.1 Linux ядросының шығарылуымен қолданудан тоқтатылды және оны өңдеуге қатысты бастапқы кодтың соңғы бөліктері 5.18 нұсқасында алынып тасталды.

Қателерді жою

Дебюг ақпараттарын a.out форматы символдар кестесіндегі арнайы жазбалар (stabs) арқылы қолдайды. Stabs форматы көптеген COFF және ELF түрлерінде де қолданылған.