소스의 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 빌드 지침, 이 프로세스를 자세히 설명합니다. 당신은 기본 컴파일러를 구축하고 싶을 것이고 모든 단계는 chroot 내에서 수행되어야 gcc가 해당 시스템과 일치하도록 구축될 것입니다.

관련 정보