소스의 chroot 내에서 GCC 빌드

소스의 chroot 내에서 GCC 빌드

이전 질문에서는 임베디드 장치 환경을 시뮬레이션하는 chroot를 만드는 방법을 물었습니다. 누군가 chroot의 소스 GCC와 binutils에서 먼저 빌드할 것을 제안했습니다. 이를 시도하기 위해 호스트 시스템의 libc 및 gcc 바이너리 버전을 chroot에 복사했습니다. 그런 다음 test.c 파일에 간단한 hello world 프로그램을 작성하고 다음과 같이 chroot에 빌드해 보았습니다.

  phil@phil-desktop:/usr$ sudo chroot /usr/embedded_chroot1/
  bash-4.2# gcc test.c 
  gcc: error trying to exec 'cc1': execvp: No such file or directory

이 오류로 인해 무슨 일이 일어나고 있는지 잘 모르겠습니다. gcc 바이너리와 libc를 chroot에 복사했는데 왜 컴파일할 수 없나요? 또한 모든 시스템 소스 파일과 헤더 파일을 내 chroot에 복사해야 합니까? chroot를 사용하는 전체 과정에 대해 개념적인 오해가 있는 것 같습니다.

답변1

gcc 빌드는 시스템에 기존 컴파일러 없이 자체적으로 부트스트랩할 수 있습니다. 당신은 할 수 있어야합니다다운로드gcc의 압축을 풀고 외부에서 아무것도 복사하지 않고 chroot에서 빌드합니다. 이 일을 한 지 꽤 시간이 지났지만 꽤 고통스러웠던 것으로 기억합니다.

저것 좀 봐(이거gcc 빌드 지침, 이 프로세스를 자세히 설명합니다. 시스템에 맞게 gcc를 빌드하려면 기본 컴파일러를 빌드해야 하며 모든 단계는 chroot 내에서 수행되어야 합니다.

관련 정보