Ubuntu 16.04 LTSでLinuxカーネル3.10.31をコンパイルしようとしました。 私はUbuntu 12.04 LTSで全く同じカーネルをコンパイルしていましたが、すべてうまく動作します。Ubuntuで古いLinuxカーネルをコンパイルする16.04 LTS
Ubuntu 16.04では、gccのバージョンはgcc-5
です。 Ubuntu 12.04では、gccのバージョンはgcc-4.6
です。
3.18より前のLinuxカーネルカーネルはgcc-5
でコンパイルできないようです。私がUbuntuの16.04へのgcc-4.7をインストールするとgcc-4.7を指すように/usr/bin/gcc
を変更しようとしましたmake
fatal error: linux/compiler-gcc5.h: No such file or directory
でコンパイルされたときに、カーネル3.10.31には、次のエラーを報告します。これは上記のエラーを解決する可能性があります。しかし、それは私が実行した後、新たな問題につながるmake
$linux/arch/x86/Makefile:98: stack protector enabled but no compiler support
make[1]: Nothing to be done for 'all'.
make[1]: Nothing to be done for 'relocs'.
CHK include/generated/uapi/linux/version.h
CHK include/generated/utsrelease.h
CC kernel/bounds.s
gcc-4.7.real: error: unrecognized command line option ‘-no-pie’
linux/./Kbuild:35: recipe for target 'kernel/bounds.s' failed
make[1]: *** [kernel/bounds.s] Error 1
Makefile:835: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2
私の質問は:
のUbuntu 16.04に古いカーネル3.10.31をコンパイルするために、古いコンパイルチェーンを使用するためのきちんとした方法があります?
ありがとうございました!アドバイスは本当に感謝しています。
そのリンクは死んでいますが、ここに別のものがあります: [https://raw.githubusercontent.com/siemens/u-boot/master/include/linux/compiler-gcc5.h] –