Heim > Artikel > System-Tutorial > So richten Sie den PC-Kompilierungskernel und die Einstellungen ein: Kompilierung einrichten
Dies ist kostenlose Software; die Kopierbedingungen finden Sie in der Quelle. Es gibt KEINE
Garantie; nicht einmal für MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.
Hinweis: Die Arm-Tool-Kette kann hier heruntergeladen werden: Antworten Sie auf „ARM“, um sie anzuzeigen.
2. Kompilierungsziel festlegen
Bevor Sie den Kernel konfigurieren oder kompilieren, müssen Sie zunächst die Ziel-CPU-Architektur und die beim Kompilieren zu verwendenden Toolketten festlegen. Dies sind die grundlegendsten Informationen, die zunächst ermittelt werden müssen.
Wenn Sie den Kernel für den PC kompilieren, den Sie gerade verwenden, ist es nicht erforderlich, ihn festzulegen.
Andernfalls müssen Sie es für das Embedded-Linux-Training klar einrichten.
Hier nehmen wir zur Veranschaulichung den Arm als Beispiel.
Es gibt zwei Einstellungsmethoden ():
a)Makefile ändern
Öffnen Sie das Makefile im Stammverzeichnis des Kernel-Quellcodes, ändern Sie die folgenden zwei Makefile-Variablen und speichern Sie sie.
ARCH:=Arm
CROSS_COMPILE:=arm-linux-
Beachten Sie, dass die Einstellung von cross_compile hier davon ausgeht, dass der gcc-Programmname der verwendeten Cross-Tool-Kette arm-linux-gcc ist. Wenn der tatsächlich verwendete GCC-Name „something-else-gcc“ lautet, geben Sie einfach „something-else-“ ein. Auf jeden Fall sollten die letzten drei Buchstaben von gcc im Namen weggelassen werden.
b) Jedes Mal, wenn Sie den Befehl make ausführen, werden diese Informationen über die Befehlszeilenparameter übergeben.
Hier geht es offenbar darum, den Wert der Variablen über das Befehlszeilenargument an das Make-Tool anzugeben.
Zum Beispiel
Verwenden Sie beim Konfigurieren des Kernels
makeARCH=armCROSS_COMPILE=arm-linux-menuconfig
Wird beim Kompilieren des Kernels verwendet
makeARCH=armCROSS_COMPILE=arm-linux-
Beachten Sie, dass beim Kompilieren des PC-Kernels dies nicht bedeutet, dass diese beiden Elemente nicht konfiguriert sind, auch wenn der Benutzer dies nicht explizit festlegt. Denn wenn der Benutzer diese beiden Elemente nicht festlegt, generiert das Makefile oben im Kernel-Quellcode (im Stammverzeichnis des Quellcodes) die Werte dieser beiden Variablen mit der folgenden Methode.
SUBARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc64/
-es/arm.*/arm/-es/sa110/arm/
-es/s390x/s390/-es/parisc64/parisc/
-es/ppc.*/powerpc/-es/mips.*/mips/
-es/sh[234].*/sh/)
ARCH?=$(SUBARCH)
CROSS_COMPILE?=
Durch den vorherigen Code wurde ARCH zum Arch des PC-Compilers, also SUBARCH. Wenn die Ausgabe von uname-m auf dem PC daher ix86 ist, wird der Wert von ARCH zu i386.
Der Wert von CROSS_COMPILE ist, sofern nicht konfiguriert, eine leere Zeichenfolge. Auf diese Weise hat der Name des verwendeten Tool-Chain-Programms kein Präfix mehr wie arm-linux-, was der Verwendung von gcc auf dem PC entspricht.
Noch ein paar Worte zum Schluss: Der Wert von ARCH muss weiter verallgemeinert werden. Da es im Arch-Verzeichnis des Kernel-Quellcodes kein i386-Verzeichnis und auch kein Verzeichnis wie sparc64 gibt.
Daher wird im Makefile im obersten Stockwerk eine SRCARCH-Variable erstellt und ihr Wert durch den folgenden Code generiert. Auf diese Weise stimmt die SRCARCH-Variable schließlich mit einem bestimmten Architekturnamen im Arch-Verzeichnis des Kernel-Quellcodes überein.
SRCARCH:=$(ARCH)
ifeq($(ARCH),i386)
SRCARCH:=x86
endif
ifeq($(ARCH),x86_64)
SRCARCH:=x86
endif
ifeq($(ARCH),sparc64)
SRCARCH:=sparc
endif
ifeq($(ARCH),sh64)
SRCARCH:=sh
endif
3. Konfigurieren Sie den Kernel
Der Kernel hat so viele Funktionen, wie wird jeder Teil kompiliert (in den Kernel oder in ein Modul) und welche Arbeitsparameter können alle konfiguriert werden? Zu diesem Zweck müssen wir vor Beginn der Kompilierung eine Konfigurationsliste erstellen, diese im Kernel-Quellstammverzeichnis ablegen, sie als .config-Datei benennen und dann den benötigten Kernel gemäß dieser .config-Datei kompilieren.
Es gibt jedoch zu viele Konfigurationselemente im Kernel. Es ist zu mühsam, Linux so zu konfigurieren, dass Umgebungsvariablen einzeln festgelegt werden. Darüber hinaus ist der Satz von Konfigurationselementen, die für verschiedene CPU-Architekturen konfiguriert werden können Detaillierte Erläuterung der Arm-Interrupt-Implementierung im Linux-Kernel unterschiedlich. Beispielsweise ist das Konfigurationselement, ob ein bestimmtes Funktionsmerkmal einer bestimmten CPU unterstützt werden soll Detaillierte Erläuterung der Arm-Interrupt-Implementierung im Linux-Kernel ein Konfigurationselement im Zusammenhang mit der CPU-Architektur. Daher bietet der Kernel eine einfache Konfigurationsmethode.
Nehmen Sie den Arm als Beispiel. Die spezifische Methode ist wie folgt.
a) Suchen Sie gemäß unserer Ziel-CPU-Architektur im Verzeichnis arch/arm/configs des Kernel-Quellcodes eine Konfigurationsdatei (z. B. s3c2410_defconfig), die dem Zielsystem am nächsten liegt, kopieren Sie sie in das Stammverzeichnis des Kernel-Quellcodes und Nennen Sie es .config.
Hinweis: Wenn Sie den Kernel für den aktuellen PC kompilieren, ist es am besten, die folgende Datei als anfängliche Konfigurationsdatei in das Kernel-Quellstammverzeichnis zu kopieren. Diese Datei ist die Konfigurationsdatei, die beim Kompilieren des aktuell auf dem PC ausgeführten Kernels verwendet wird.
/lib/modules/`uname-r`/build/.config
Ein paar Worte hier übrigens: Die Konfigurationsdatei des PC-Kernels bietet so viele Funktionen zur Auswahl. Sie werden es nicht wissen, wenn Sie es nicht kompilieren, Sie werden es nur wissen, wenn Sie es kompilieren. Der Zweck der Linux-Herausgeber besteht dabei möglicherweise darin, das von ihnen vertriebene Linux an die unterschiedlichen Bedürfnisse der Benutzer anzupassen.
b) Führen Sie makemenuconfig aus, um einige notwendige Änderungen an dieser Konfiguration vorzunehmen, wählen Sie beim Beenden „Speichern“ und die neue Konfiguration wird in der .config-Datei aktualisiert.
Hinweis
Das obige ist der detaillierte Inhalt vonSo richten Sie den PC-Kompilierungskernel und die Einstellungen ein: Kompilierung einrichten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!