Ich versuche, einen Kernel für einen 32-Bit-Single-Core-Intel-Atom-Rechner zu kompilieren. Unnötig zu erwähnen, dass das Kompilieren übermäßig viel Zeit in Anspruch nimmt. Es dauert 2 Stunden und es ist immer noch nur die Hälfte der Treibermodule.
Das Kompilieren eines Kernels auf meinem Hauptdesktop dauert nur 15 Minuten, ist jedoch eine 64-Bit-Maschine. Kann ich Cross-Compile verwenden, um ein 32-Bit-Kernel-Paket auf dem besseren Computer zu generieren?
Antworten:
Während der Kernel übergreifend kompiliert werden kann, ist es am einfachsten, ein 32-Bit-Chroot (i386) zu erstellen und dort einzubauen.
Installieren Sie
ubuntu-dev-tools
:Erstellen Sie eine i386-Chroot:
(Sie müssen das wahrscheinlich zweimal ausführen. Beim ersten Mal wird es installiert
schroot
usw. und eingerichtet.mk-sbuild
)Dann betrete die Chroot:
Und bauen Sie den Kernel wie gewohnt.
quelle
Afaik, in gcc können Sie
-m32
flag setzen, damit es Linux-Quellen zu 32-Bit-ausführbaren Dateien kompiliert. Ich habe keine großen Kenntnisse über Makefiles, aber Sie können sie optimieren.edit: Ich wollte hier eine Frage von stackoverflow hinzufügen , in der gesagt wird, dass cflags gesetzt werden sollen:
Und aus dem Linux-Repository in Torvalds 'Github-Konto habe ich den folgenden Abschnitt im Haupt-Makefile gefunden, der möglicherweise nützlich ist, da er besagt, dass Sie eine Zielarchitektur festlegen können, indem Sie eine Umgebungsvariable festlegen. Lesen Sie die Kommentare, derzeit sind diese Zeilen aus dieser Datei , zwischen den Zeilen 174-196 :
quelle