프로그램이 항상 a.out으로 컴파일되는 이유는 무엇입니까? 왜 p.out이나 c.out, g.prog는 안되나요?

프로그램이 항상 a.out으로 컴파일되는 이유는 무엇입니까? 왜 p.out이나 c.out, g.prog는 안되나요?

cc역사적으로 나는 명령을 실행할 때 make 파일이 없거나 컴파일러에서 특정 플래그를 사용하지 않는 한 gcc일반적으로 내 출력이 항상 로 컴파일된다는 것을 알고 있습니다 . a.out그런데 왜 a.out? 수백만 가지의 가능성이 있는 이유는 무엇 c.out입니까 ?c.run

답변1

그것은 역사적인 유물, 즉 헤리티지 빈티지입니다. 역사상의 a.out대표"어셈블러 출력".

a.out지금은 파일 이름일 뿐이지만 이전에는 실행 파일의 파일 형식이기도 했습니다.

현재 실행 파일 a.out형식은 거의 지원되지 않습니다. 이것ELF 형식용도가 더 넓지만 C 컴파일러가 기본적으로 출력하는 이전 이름을 여전히 유지합니다.

답변2

@A.Meau의 답변을 확장하면... 역사적인 유물이 되는 것 외에도기본 이름은 a.outPOSIX에서 지정합니다.:

링크 편집을 방지하는 옵션이 없는 경우(예:-씨또는-이자형), 모든 입력 파일은 오류 없이 컴파일 및 링크됩니다. 생성된 실행 파일은 다음을 기반으로 해야 합니다.-영형 결과물 파일옵션(있는 경우) 또는 파일가. 출력.

이는 실행 파일에서 사용되는 실제 바이너리 형식에 관계없이 적용됩니다.a.out원래 특정 형식과 연결되어 있음, 그러나 최신 Linux 시스템은 일반적으로 다음을 사용합니다.매우 낮은 주파수.

관련 정보