2016-06-14 5 views
0

Ich habe versucht, den Linux-Kernel 3.10.31 auf Ubuntu 16.04 LTS zu kompilieren. Ich kompilierte den gleichen Kernel auf Ubuntu 12.04 LTS, und alles funktioniert gut.Kompiliere einen alten Linux-Kernel auf Ubuntu 16.04 LTS

Auf Ubuntu 16.04 ist die gcc-Version gcc-5; Auf Ubuntu 12.04 ist die gcc-Version gcc-4.6.

Es scheint, dass der Linux-Kernel vor 3.18 nicht mit dem gcc-5 kompilieren kann. Der Kernel 3.10.31 meldet den folgenden Fehler, wenn es von make

fatal error: linux/compiler-gcc5.h: No such file or directory 

zusammengestellt habe ich versucht gcc-4.7 auf Ubuntu 16.04 zu installieren und die /usr/bin/gcc an den gcc-4.7-zu-Punkt ändern. Dies könnte den obigen Fehler lösen. Es führt jedoch zu neuen Problemen, nachdem ich 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 

Meine Frage laufen ist:

Gibt es eine nette Art und Weise die alte Compilierung Kette zu verwenden, den alten Kernel 3.10.31 auf Ubuntu 16.04 zu kompilieren ?

Vielen Dank für Ihre Hilfe! Jeder Rat wird wirklich geschätzt.

Antwort

2

Ich denke, ich habe eine Lösung gefunden.

Wir müssen die alte Version gcc nicht installieren. Wir müssen nur die Datei compiler-gcc5.h from here oder from here in include/linux/kopieren. Es wird das Problem der Kompilierung lösen.

+0

dieser Link ist jedoch tot - hier ist ein weiterer: [https://raw.githubusercontent.com/siemens/u-boot/master/include/linux/compiler-gcc5.h] –