Linux 4.19カーネルは、古いアーキテクチャでのコンパイルエラーのため、ビルドにGCC4.6が必要になりました

Linux-Unix / Linux 4.19カーネルは、古いアーキテクチャでのコンパイルエラーのため、ビルドにGCC4.6が必要になりました 1分読む

Linux Kernel Organisation、Inc。



カーネルに取り組んでいるLinux開発者の場合、リリース予定のLinux 4.19カーネルは、カーネル構築に必要なGCCの最小バージョンを引き上げます。公式のLinuxカーネルはGCC3.2を 最小 カーネル構築に必要なコンパイラのバージョンですが、Linuxカーネル4.19はそれをGCC4.6に引き上げています。

これは、古いGCC4リリースのさまざまなアーキテクチャがLinuxカーネルをクリーンにコンパイルできなかったためです。そのため、GCC4.6が最小値として設定されています。カーネルはGCC4.6.0以降も明示的にチェックし、見つからない場合はコンパイラーがエラーになります。



これはカーネルコードにとっても有益です。カーネル開発者は、コンパイラのバグや古いコンパイラリリースの動作の違いを目的とした古いGCC回避策のために数十行のコードを取り除くことができたからです。



この変更は本日、Git commitを介してマージされました。GCC4.6.0は2011年にリリースされたため、GCCに将来の更新があるかどうかも確認します。



この更新のchangelog / commitは、基本的に、以下に示すように、古いバージョンのGCCコンパイラがさまざまなアーキテクチャでカーネルを構築できなかったことが原因で変更がほぼ完全に行われることを示しています。

 さまざまなアーキテクチャは、古いバージョンのgccコンパイラでは正しくビルドできません。 スレッド[1]のGuenterRoeckの例:>> ./include/linux/mm.h:17:0からインクルードされたファイル、> ./include/linux/pid_namespace.h:7から、> ./ includeから/linux/ptrace.h:10、> arch / openrisc / kernel / asm-offsets.c:32から:> ./include/linux/mm_types.h:497:16:エラー:それ以外の場合は空の構造の柔軟な配列メンバー> >これはor32用のgcc4.5.1の単なる例です。 > gcc 4.4(unicore32用)でも問題が発生しました。 したがって、gccの最小必要バージョンを4.6に更新します。 [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ その他: -Documentation / process /changes.rstを更新します-4.6より前のバージョンのcompiler-gcc.hのバージョンテストブロックを削除して統合します

メインラインのLinuxx86_64カーネルを構築するためのLLVMClangの取り組みに関しては、現在、特にLLVMLinuxプロジェクトで、取り組みが停滞しています。ただし、Clangを使用してARMLinuxスペースを介してカーネルを構築する作業はいくつかあります。