저는 Linux From Scratch라는 책을 계속 읽었으며 Linux 크로스 컴파일에 대한 이해의 일부 공백을 메우고 싶었습니다.
대상 머신에 맞게 툴체인이 구축된 경우 크로스 컴파일에 필요한 일반적인 작업 순서는 다음과 같나요?
- 대상에 대한 파일 시스템 계층 구조 생성
- 대상 머신의 표준 라이브러리를 컴파일하고 대상의 파일 시스템에 설치합니다.
- 이전에 대상용으로 컴파일된 표준 라이브러리를 사용하여 대상 시스템용 커널을 컴파일합니다.
- 대상의 파일 시스템에서 이미지 생성
- 대상 머신에서 이미지 실행
답변1
즉, 운영 체제 통합 없이 "독립형" 크로스 컴파일러로 시작할 수 있습니다. 이는 C 프런트엔드에서만 작동합니다.
이 방법으로 커널과 C 라이브러리를 컴파일할 수 있습니다(커널 헤더 파일 필요).
C 라이브러리를 구축한 후 전체 운영 체제 통합 및 언어 지원을 통해 크로스 컴파일러를 컴파일할 수 있습니다.
gcc를 사용하면 공유 libgcc가 공유 libc와 연결되어야 하고 공유 libc가 공유 libgcc와 연결되어야 하기 때문에 일반적으로 더 많은 작업이 필요합니다. 전체 업그레이드는 libc에서 모든 컴파일러 종속성을 제거하므로 재사용이 가능합니다.