J'essaie de compiler un noyau pour une machine Intel Atom monocœur 32 bits. Inutile de dire que la compilation prend énormément de temps. Cela dure depuis 2 heures et ce n'est encore qu'à mi-chemin des modules du pilote.
Compiler un noyau sur mon bureau principal ne prend que 15 minutes mais c'est une machine 64 bits. Puis-je effectuer une compilation croisée pour générer un package de noyau 32 bits à partir de la meilleure machine?
Réponses:
Bien que le noyau puisse être compilé de manière croisée, le moyen le plus simple est de créer un chroot 32 bits (i386) et de le construire dedans.
Installer
ubuntu-dev-tools
:Créez un chroot i386:
(Vous devrez probablement l'exécuter deux fois. La première fois, il installe
schroot
etc. et configuremk-sbuild
)Entrez ensuite le chroot:
Et construisez le noyau, comme vous le feriez normalement.
la source
Afaik, dans gcc, vous pouvez définir un
-m32
indicateur pour lui permettre de compiler des sources linux en exécutables 32 bits. Je n'ai pas une grande connaissance des Makefiles, mais vous pouvez les modifier.edit: je voulais ajouter une question de stackoverflow ici, dans laquelle il est dit de définir cflags:
Et à partir du référentiel Linux dans le compte github de Torvalds , j'ai trouvé la section suivante sur le makefile principal qui peut vous être utile, car elle indique que vous pouvez définir une architecture cible en définissant une variable d'environnement. Lisez les commentaires, actuellement, ces lignes proviennent de ce fichier , entre les lignes 174-196 :
la source