Programing

GCC와 g ++는 어떻게 부트 스트랩됩니까?

lottogame 2020. 5. 18. 08:04
반응형

GCC와 g ++는 어떻게 부트 스트랩됩니까?


이것은 잠시 동안 나를 괴롭 혔습니다. GCC와 g ++는 어떻게 스스로 컴파일합니까?

모든 개정판이 이전에 작성된 개정판으로 컴파일된다고 생각합니다. 이것이 사실입니까? 그렇다면 그것이 가장 오래된 g ++ 및 GCC 버전이 어셈블리로 작성되었음을 의미합니까?


가장 오래된 GCC 버전은 다른 C 컴파일러를 사용하여 컴파일되었습니다. 최초의 C 컴파일러 (약 1973 년, IIRC)는 PDP-11 어셈블리 또는 그 이전의 B 프로그래밍 언어 로 구현 되었지만, 어느 경우 에나 B 컴파일러는 어셈블리로 작성되었습니다.마찬가지로, 최초의 C ++ 컴파일러 (CPre / Cfront , 1979-1983)는 아마도 C로 구현 된 후 C ++로 다시 작성되었을 것입니다.

GCC 또는 다른 자체 호스팅 컴파일러를 컴파일 할 때 전체 빌드 순서는 다음과 같습니다.

  1. 기존 C 컴파일러를 사용하여 새 버전의 GCC 빌드
  2. 방금 만든 GCC로 새 버전의 GCC를 다시 빌드하십시오.
  3. (선택 사항) 확인을 위해 2 단계를 반복합니다.

이 과정을 부트 스트랩 이라고 합니다. 컴파일러 자체 컴파일 기능을 테스트하고 결과 컴파일러가 자체적으로 구현하는 모든 최적화로 빌드되는지 확인합니다.

편집 : Drew Dormann은 의견에서 Bjarne Stroustrup의 초기 C ++ 구현 에 대한 설명을 지적합니다 . 그것은 C ++로 구현되었지만 Stroustrup이 C ++에서 C로 "전 처리기"라고 부르는 것에 의해 번역되었습니다. 그의 정의에 의한 완전한 컴파일러는 아니지만 여전히 C ++은 C로 부트 스트랩되었습니다.

참고 URL : https://stackoverflow.com/questions/9429491/how-are-gcc-and-g-bootstrapped

반응형