LFS: 툴체인이 무엇인가요? 왜 중요 함?

LFS: 툴체인이 무엇인가요? 왜 중요 함?

저는 리눅스를 처음부터 배우고 있어요.페이지툴체인에 대해 토론하세요. 지금까지 모든 것을 이해했지만 "툴체인"이라는 용어를 이해하지 못합니다.

내가 아는 한, 툴체인은 새로운 배포판에서 도구를 컴파일하는 데 사용되는 도구 세트입니다. 이는 소프트웨어가 호스트 컴파일러를 사용하여 컴파일되지 않도록 하기 위해 필요합니다.

Glibc, Binutils 등을 호스트 도구(이 단계에서 컴파일러가 구축되고 있다고 생각함)를 사용하여 컴파일해야 한다고 생각하는 것이 맞습니까? 그런 다음 완료되면 새로 컴파일된 컴파일러를 사용하여 운영 체제를 생성하는 다른 도구를 구축하게 될까요?

이 부분은 매우 개략적이며 Google 검색에서는 유용할 수 있는 결과가 나오지 않았습니다. 누구든지 내가 이것을 더 잘 이해하는 데 도움이 될 유용한 자료를 공유할 수 있다면 좋을 것입니다.

답변1

툴체인은 단순히 소프트웨어(컴파일러, 어셈블러, 링커, 라이브러리 및 일부 유용한 유틸리티)를 구축하기 위한 도구입니다.

이 경우 중요한 부분은호스트 독립적- 다운로드한 도구와는 아무런 관련이 없습니다.

도구를 다시 빌드하려는 데에는 여러 가지 이유가 있습니다.

  • 백도어에 몰래 들어가는 것이 더 어렵습니다(불가능하지는 않지만).
  • 컴파일 매개변수는 적합하게 조정될 수 있습니다.당신의일반적인 바이너리가 아닌 시스템.
  • 최신 버전의 도구를 받게 됩니다.

답변2

LFS는 툴체인(즉, 그들이 사용하는 컴파일러, 링커, 어셈블러 및 라이브러리)을 세 번 다시 빌드합니다.

  • 처음으로 호스트 시스템의 툴체인을 사용하여 대상 시스템에 새 툴체인( gcc, ld, binutils등) 을 빌드합니다. glibc이러한 도구는 호스트 시스템의 공유 라이브러리에 연결되며 현재 대상 시스템으로 부팅하면 존재하지 않습니다. 그래서...
  • 두 번째로, 툴체인은 대상 컴퓨터에 설치된 라이브러리를 기반으로 구축됩니다. 즉, 대상 시스템으로 부팅하면 툴체인이 작동하지만 여전히 호스트 시스템과 연결할 가능성이 있으며, 어떤 툴체인이든 여전히 대상 시스템이 아닌 호스트 시스템에 대한 최적화로 컴파일된다는 의미입니다. 그래서...
  • 세 번째는 매력입니다. 이번에는 툴체인이 모든 링크나 첨부 파일의 호스트 시스템을 완전히 "정리"하고 대상 시스템에 맞게 최적화합니다.

이는 아마도 LFS 시스템 구축에 있어 가장 중요한 부분일 것이며, 지침에 세심한 주의를 기울이는 것이 중요합니다. 제가 구축한 모든 LFS 시스템(지금까지 4개)에서 이 부분이 문제가 있었습니다. 때로는 이러한 문제가 훨씬 나중에까지 나타나지 않는 경우가 있는데, 이는 상상할 수 있듯이 매우 실망스러운 일입니다.

관련 정보