Linux 커널을 컴파일하기 위해 GCC 버전을 선택하는 방법은 무엇입니까?

Linux 커널을 컴파일하기 위해 GCC 버전을 선택하는 방법은 무엇입니까?

Linux 커널이 최소 컴파일 요구 사항을 지정한다는 것을 알고 있지만 배포/공급업체가 Linux 커널을 컴파일할 때 사용할 GCC 버전을 선택하는 방법에 대한 정보 소스를 찾지 못했습니다.

예를 들어 데비안 관리자는 사용할 GCC 버전을 어떻게 결정합니까? 아니면 Qualcomm이나 Samsung과 같은 모바일 칩셋 공급업체는 Android 기반 칩셋용 Linux를 구축할 때 어떻게 선택합니까?

답변1

저는 커널 개발자가 아니며 확실한 답을 갖고 있지 않습니다. 이에 대한 제 의견은 다음과 같습니다.

  • 새 릴리스에는 일반적으로 언어 지원, 기능, 진단 및 최적화 측면에서 가장 큰 가치를 제공하는 안정적인 최신 GCC 버전이 포함될 가능성이 높습니다.
  • 유지관리자는 배포판의 기본 GCC를 사용하여 패키지를 구축할 수 있습니다. 이는 일관성과 안정성을 제공하므로 배포판에 가장 도움이 됩니다(모두 동일하고 시도되고 테스트된 기본 GCC 버전을 사용함).
  • 칩 공급업체는 독점 또는 포팅된 GCC 컴파일러에 의존하는 경우가 많습니다. 내부에서 여러 컴파일러를 유지 관리하는 것은 (노력과 비용 측면에서) 의미가 없으며 칩 공급업체의 고객(SoC 공급업체 또는 해당 칩용 소프트웨어를 구축하는 소프트웨어 회사)이 동일한 컴파일러를 사용할 수 있습니다. 칩), 커널이 지원하는 가장 높은 GCC 버전을 사용하는 것이 회사의 최선의 이익입니다.
  • 컴파일러는 이전 버전과 호환되며 GCC는 인터페이스 변경을 거의 도입하지 않으므로(C++98에서 C++11로의 ABI 변경을 고려하지 않음) 거의 항상 최신 컴파일러 버전을 사용해야 합니다. 그러나 컴파일러 버그가 있고 최신 컴파일러 버전에서는 성능 저하가 발생할 수 있으므로 컴파일러 버전을 업그레이드하는 것은 큰 일이 될 수 있으며 회사에서 GCC 릴리스를 매우 느린 속도로 발전시킬 수 있습니다. 자체 컴파일러를 개발하는 개발자의 경우 비용도 매우 많이 듭니다. 칩 공급업체의 경우).

두 가지 요점을 요약하자면, Linux 관리자는 배포판에 기본값으로 설정된 GCC 버전을 사용하는 경향이 있는 반면, 칩 공급업체는 자신의 목표를 지원하는(그리고 시스템의 다른 구성 요소와 호환되는) 최신 GCC 버전을 사용하는 경향이 있다고 생각합니다. 드라이버로서 ) 함께 잘 작동합니다) ). 이것이 의미가 있기를 바랍니다.

동일한 문제에 관해 Linux Journal에서 커널에 사용할 GCC 버전 결정에 관한 매우 흥미로운 기사를 발견했습니다. 읽어볼 가치가 있습니다.
최소 GCC 버전은 3.2에서 4.8로 점프할 수 있습니다.

관련 정보