2016-06-14 12 views
0

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をコンパイルするために、古いコンパイルチェーンを使用するためのきちんとした方法があります?

ありがとうございました!アドバイスは本当に感謝しています。

答えて

2

私は解決策を考え出しました。

古いバージョンのgccをインストールする必要はありません。 include/linux /にファイルコンパイラ-gcc5.h from hereまたはfrom hereをコピーする必要があります。コンパイルの問題を解決します。

+0

そのリンクは死んでいますが、ここに別のものがあります: [https://raw.githubusercontent.com/siemens/u-boot/master/include/linux/compiler-gcc5.h] –

関連する問題