LinuxカーネルをコンパイルするためにGCCバージョンを選択する方法は?

LinuxカーネルをコンパイルするためにGCCバージョンを選択する方法は?

Linuxカーネルが最小コンパイル要件を指定していることはわかっていますが、ディストリビューション/ベンダーがLinuxカーネルをコンパイルするときに使用するGCCバージョンを選択する方法に関する情報ソースを見つけることができませんでした。

たとえば、Debian 管理者はどのバージョンの GCC を使用するかを決定します。それとも、QualcommやSamsungなどのモバイルチップセットベンダーは、Androidベースのチップセット用のLinuxを構築する際にどのように選択しますか?

ベストアンサー1

私はカーネル開発者ではなく、確かな答えを持っていません。これに対する私の意見は次のとおりです。

  • 新しいリリースには、一般的に、言語サポート、機能、診断、最適化の観点から最大の価値を提供する安定した最新のGCCバージョンが含まれる可能性が高くなります。
  • メンテナはディストリビューションのデフォルトのGCCを使用してパッケージを構築できます。これは一貫性と信頼性を提供するため、ディストリビューションに最も役立ちます(すべて同じで試してテストされたデフォルトのGCCバージョンを使用します)。
  • チップベンダーは、独自のまたは移植されたGCCコンパイラに依存することがよくあります。内部で複数のコンパイラを維持することは(労力とコストの面で)意味がなく、チップベンダーの顧客(SoCベンダーまたはそのチップ用ソフトウェアを構築するソフトウェア会社)が同じコンパイラを使用できます。チップ)、カーネルがサポートする最高のGCCバージョンを使用することは、会社の最善の利益です。
  • コンパイラは以前のバージョンと互換性があり、GCCはインターフェイスの変更をほとんど導入しないため(C ++ 98からC ++ 11へのABIの変更を考慮しない)、ほとんど常に最新のコンパイラバージョンを使用する必要があります。しかし、コンパイラのバグがあり、最新のバージョンのコンパイラでパフォーマンスが低下する可能性があるため、コンパイラのバージョンをアップグレードすることは大きな仕事になる可能性があり、会社のGCCリリースを非常に遅い速度で発展させる可能性があります。独自のコンパイラを開発する開発者にとって、コストも非常に高くなります。チップサプライヤーの場合)。

2つのポイントを要約すると、Linux管理者はディストリビューションでデフォルトに設定されたGCCバージョンを使用する傾向がありますが、チップベンダーは自分の目標をサポートする(そしてシステムの他のコンポーネントと互換性がある)最新のGCCバージョン使う傾向があると思います。ドライバとして)一緒にうまく動作します))。これが意味があることを願っています。

同じ問題について、Linux Journalでカーネルで使用するGCCバージョンの決定に関する非常に興味深い記事を見つけました。読む価値があります。
最小GCCバージョンは3.2から4.8にジャンプできます。

おすすめ記事