Frage

Linux-Kernel geschrieben, mit gcc und verwendet eine Menge von kleinen und hässlichen gcc-Hacks für die Erstellung. Welche Compiler kompilieren können Linux-Kernel außer gcc?

Die eine, die kann, ist der Intel Compiler. Was minimale Version davon benötigt wird, um für den Kernel kompilieren?

Es gab auch einen Tiny C Compiler, aber es konnte nur reduziert kompilieren und speziell Version des Kernels bearbeitet werden.

Gibt es andere Compiler fähig Kernel zu bauen?

War es hilfreich?

Lösung 2

Es gibt laufenden Prozess der Begehung LLVMLinux Patches in Vanilla-Kernel (2013-2014).

Das LLVMLinux ist Projekt wird von der Linux Foundation: http://llvm.linuxfoundation.org/ zu ermöglichen Vanilla-Kernel wird mit LLVM gebaut. Lot von Patches werden durch Behan Webster, der LLVMLinux Projektleitung ist.

Es ist LWN Artikel über das Projekt ab Mai 2013 https://lwn.net/Articles/549203/ "LFCs: Das LLVMLinux Projekt"

Aktueller Stand der LLVMLinux Projekt wird auf Seite verfolgt http://llvm.linuxfoundation.org /index.php/Bugs#Linux_Kernel_Issues

Things (im Grunde gcc-isms) bereits aus dem Kernel entfernt: * Expicit Register Variablen (non-C99) * VLAIS (non-compliant C99 nicht dokumentierte GCC Merkmal "Variable Länge in structs Arrays"), wie struct S { int array[N];} oder sogar struct S { int array[N]; int array_usb_gadget[M]; } wobei N und M sind nicht-konstante Funktion Argument * Nested Functions (Ada-Funktion in C von GCC / Gnat Entwickler portiert, nicht in C99 erlaubt) Einige gcc / Gas-Magie wie spezielle Segmente * oder Makro

Dinge zu tun: * Die Verwendung von __builtin_constant_p builtin zu beängstigend Magie wie BUILD_BUG_ON(!__builtin_constant_p(offset));

implementieren

Die gute Nachricht über LLVMLinux sind, dass nach seiner Patches Kernel nicht nur mit LLVM + Klirren bebaubare wird, sondern auch leichter zu bauen durch andere nicht-GCC Compiler, weil das Projekt nicht viel C99 Code wie VLAIS tötet, durch usb-Gerät erstellt Autor, von netfilter Hackern und von Krypto-Subsystem Hacker; auch verschachtelte Funktionen getötet werden.

Andere Tipps

Eine outdatet Informationen: Sie müssen den Kernel, um flicken die Intel CC zu kompilieren mit herunterladen Linux Kernel-Patch für Intel® Compiler

Siehe auch es möglich ist, zu kompilieren Linux-Kernel mit etwas anderem als gcc für weiterführende Links und Informationen

Auf den jüngsten Quellen: http://forums.fedoraforum.org/ showthread.php? p = 1328718

Kurz gesagt, kann man nicht, da der Kernel-Code geschrieben wurde Vorteil der gcc-Compiler Semantik zu nehmen ... und zwischen dem Kernel und dem kompilierten Code, ist die Beziehung sehr stark ein, also muss mit gcc kompiliert werden. ..Since gcc Verwendungen 'ELF' (Embedded Linking Format) Objektdateien, muss der Kernel den Objektcode-Format gebaut werden. Es sei denn, Sie es an der Arbeit mit einem anderen Compiler hacken können - es gut kompilieren kann, aber kann nicht funktionieren, da die Compiler unter Windows PE-Code erzeugt, könnte es zu unerwarteten Ergebnissen sein, die Kernel Sinn kann nicht Boot überhaupt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top