a.
a.out| 파일 이름 확장자 | none, .o, .so, .out |
|---|---|
| 개발자 | AT&T |
| 포맷의 종류 | 바이너리, 실행 파일, 오브젝트, 공유 라이브러리 |
a.out은 이전 버전의 Unix와 유사한 컴퓨터 운영 체제에서 실행 파일, 개체 코드 및 이후 시스템에서 공유 라이브러리를 위해 사용되는 파일 형식입니다.이것은 Ken Thompson의 PDP-7 어셈블러 출력 파일 이름인 "assembler [1]output"의 약어 형식입니다.이 용어는 이후 객체 코드의 다른 형식과 대조하기 위해 결과 파일의 형식에 적용되었습니다.
"a.out"은 출력 이름이 지정되지 않은 경우 특정 컴파일러 및 링커에 의해 작성된 실행 파일의 기본 출력 파일 이름으로 유지됩니다.단, 생성된 파일은 실제로 a.out [2]형식이 아닙니다.
역사
PDP-11에서 사용되는 a.out 형식과 마찬가지로 PDP-7의 a.out 형식은 UNIX의 [3]첫 번째 에디션에서 소개되었습니다.AT&T Unix System V에서는 COFF 형식으로 대체되었으며, System V Release 4에서는 ELF 형식으로 대체되었습니다.
버클리 유닉스는 한동안 a.out 형식을 계속 사용했지만, 현대의 BSD 시스템은 그 이후로 ELF로 전환되었다.NetBSD/i386은 1.5 릴리스(2000년 12월)에서 정식으로 a.out에서 ELF로 전환되었습니다.2.2에서 3.0으로의 이행(1998년 10월) 중에 FreeBSD/i386이 ELF로 전환되었습니다.
3.2.0 릴리스에서는 MINIX 3이 ELF로 전환되었습니다.
또한 Linux는 커널 1.2(1995년 3월)까지 a.out을 사용하였고, 그 플랫폼에서도 [4]ELF로 대체되었다.실험 1.1.52 커널에 ELF 지원이 추가되었습니다.Linux의 a.out ld.so은 공유 [5]라이브러리를 재배치할 수 없기 때문에 해당 플랫폼에서 a.out 공유 라이브러리를 구축하는 복잡한 특성 때문에 다소 강제적이었습니다.이 플랫폼에는 라이브러리가 위치한 가상 주소 공간을 중앙 권한에 등록할 필요가 있었습니다.다양한 BSD 플레이버는 Linux에 비해 BSD a.out 포맷이 다소 유연하기 때문에 Linux가 강제로 [6][7]ELF로 전환된 후에도 a.out 바이너리를 계속 사용할 수 있었습니다.Linux 상의 a.out 파일 형식은 5.1 Linux 커널 출시와 함께 폐지되었으며 5.18에서 [8][9][10]이를 처리하는 소스 코드 처리의 마지막 부분이 제거되었습니다.
사용하다
링크
이 섹션은 확장해야 합니다.추가하시면 됩니다. (2016년 11월) |
디버깅
디버깅 정보에 대한 a.out 지원은 stabs라고 하는 심볼테이블의 특별한 엔트리를 사용하여 이루어집니다.stabs 형식은 COFF 및 ELF 버전에서도 많이 사용되고 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Ritchie(1993) : "Thompson의 PDP-7 어셈블러는 단순성 면에서 DEC를 능가합니다. 표현식을 평가하여 대응하는 비트를 방출했습니다.라이브러리, 로더 또는 링크 에디터는 없었습니다.프로그램의 전체 소스가 어셈블러에 제시되었고, 고정된 이름의 출력 파일이 직접 실행 가능했습니다.(이 이름 a.out은 Unix 어원의 일부를 설명합니다.이것은 어셈블러의 출력입니다.시스템이 링커 및 다른 이름을 명시적으로 지정하는 수단을 얻은 후에도 컴파일의 기본 실행 결과로서 유지되었다.)"
- ^ Wood, Rupert (8 April 2002). "What to do with a.out". gcc-help (Mailing list). Retrieved 28 April 2007.
- ^ Ritchie, Dennis (3 November 1971). a.out — assembler and link editor output (PDF). Bell Labs. Retrieved 24 November 2006.
- ^ Barlow, Daniel (14 July 1996). "The Linux ELF HOWTO (v1.29)". Archived from the original on 13 July 2004. Retrieved 28 March 2008.
- ^ Drepper, Ulrich (20 August 2006). "How To Write Shared Libraries" (PDF). 4.0. Section 1.1 (A Little Bit of History). Archived (PDF) from the original on 16 June 2007. Retrieved 20 June 2007.
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.
{{cite journal}}:Cite 저널 요구 사항journal=(도움말) - ^ Youngdale, Eric (1 April 1995). "The ELF Object File Format: Introduction". Archived from the original on 10 March 2009. Retrieved 6 May 2012.
(...) it is not impossible to design shared library implementations that work with a.out. The current Linux shared libraries are certainly one example; another example is SunOS-style shared libraries which are currently used by BSD-du-jour. SunOS-style shared libraries contain a lot of the same concepts as ELF shared libraries (...)
- ^ "BSD Myths". Archived from the original on 17 April 2007. Retrieved 10 April 2007.
There were no pressing reasons to switch earlier. In particular, FreeBSD did not (and does not) have the problems building shared libraries that spurred the Linux conversion from a.out to ELF.
- ^ "Linux Kernel Finally Deprecating A.out Support". Phoronix. Retrieved 1 September 2020.
- ^ Petkov, Borislav (5 March 2019). "x86: Deprecate a.out support". Retrieved 5 March 2019.
Linux supports ELF binaries for ~25 years now. a.out coredumping has bitrotten quite significantly and would need some fixing to get it into shape again but considering how even the toolchains cannot create a.out executables in its default configuration, let's deprecate a.out support and remove it a couple of releases later, instead.
- ^ Corbet, Jonathan (22 May 2022). "The 5.18 kernel has been released". LWN. Retrieved 22 May 2022.
the last vestiges of a.out support have been removed
- Ritchie, Dennis M. (20–23 April 1993). The Development of the C Language. The Second ACM SIGPLAN History of Programming Languages Conference (HOPL-II). Cambridge, MA: ACM. pp. 201–208. doi:10.1145/154766.155580. ISBN 0-89791-570-4. Retrieved 4 November 2014.