別のGCCバージョンでカーネルをコンパイルすると、どのような結果が起こりますか? [閉鎖]

別のGCCバージョンでカーネルをコンパイルすると、どのような結果が起こりますか? [閉鎖]

関連:

カーネルをコンパイルできません:エラー、カーネルはPICモードをサポートしていません。

私もパッチを適用するのではなく、この問題に直面しました。

私は別のgccバージョンで代替を設定し、v4からv5にジャンプし、今コンパイル中です。

$ update-alternatives --config gcc
There are 3 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path              Priority   Status
------------------------------------------------------------
  0            /usr/bin/gcc-6     30        auto mode
  1            /usr/bin/gcc-4.8   10        manual mode
* 2            /usr/bin/gcc-5     20        manual mode
  3            /usr/bin/gcc-6     30        manual mode

問題が発生する可能性があり、カーネルをコンパイルするGCCバージョンを選択するベストプラクティスはありますか?

システムはDebian Stretchです。

答え1

~によるとカーネル文書、3.2から始まるすべてのバージョンのGCCが利用可能である必要があります。しかし、実際には、以前のバージョンのGCCはカーネルビルドであまりテストされていない傾向があるので、最新バージョンのGCCを使用する方が良いでしょう(ただし、新しいものではありませんが、GCC 6に問題があります)。

Debianでは、次のように適切なGCCバージョンを見つけることができます。カーネルソースパッケージ依存関係またはカーネルヘッダパッケージの依存関係を構築します。したがって、linux-headers-4.7.0-1-amd64に依存するlinux-compiler-gcc-5-x86時によって異なります。gcc-5

CC値を取得して/usr/src/linux-headers-$(uname -r)/.kernelvariables(必要に応じてインストール後)、正しい値を自動的に取得できます。linux-headers-$(uname -r)たとえば、私のシステムは現在

override ARCH = x86
override KERNELRELEASE = 4.7.0-1-amd64
CCACHE = ccache
CC = $(if $(DEBIAN_KERNEL_USE_CCACHE),$(CCACHE)) $(CROSS_COMPILE)gcc-5
ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
override CROSS_COMPILE = $(DEB_HOST_GNU_TYPE)-
endif

CCデフォルトのGCCが何であれ(私はGCC 6をデフォルトとして使用します)、これを使用すると、動作するカーネル(または実行中のカーネルのモジュール)が生成されます。

関連情報