Mercredi 20 septembre 2006, 12:42:17 CEST, pfml a écrit :
bonjour,
'jour,
je me pose la question suivante: est ce qu'une arbo des sources du
noyau est indépendante des include "système" de la machine de build ?
(je suppose que oui évidemment mais des erreurs de compilation me font
douter du contraire)
Les sources du noyau sont indépendantes de /usr/include.
sur mon système, /usr/include/linux contient les .h installés par
kubuntu je suppose qu'il corresponde à mon noyau std et sont présent
pour les applis "user" qui ont besoin des .h du système
Actuellement, pour une Sid, ils correspondent à un noyau 2.6.17.10
(paquet linux-kernel-headers, à ne pas confondre avec linux-headers, qui,
lui, correspond au noyau installé et sert à compiler des modules).
après avoir compiler un noyau, j'effectue un
find . | xargs grep /usr/include/linux
(rgrep fonctionne très bien aussi.)
et il me trouve quelques fichiers comme ./scripts/basic/.fixdep.cmd
la compil du noyau semble faire référence à /usr/include/linux/limits.h
/usr/include/linux/errno.h
ce que j'en déduis (certainement à tort) c'est que la compil d'un noyau
2.x va (peut être) utiliser les errno.h/limits.h dépendants de la
machine de build
* soit limits.h/errno.h n'ont pas changé depuis "longtemps" et c'est
acceptable
* soit je me plante complètement
Solution n° 3 : la compilation va les utiliser pour des outils annexes,
des _scripts_, comme fixdep. Remarque aussi que gcc est lui-même compilé
avec d'autres en-têtes que ceux du noyau que tu compiles, mais,
contrairement à fixdep, il est un peu gros pour être recompilé à chaque
fois ;o)
ma "vraie" question en formulation plus simple
sur une machine de build, on peut compiler des noyaux 2.4.x et 2.6.x
sans avoir à bidouiller les fichiers sous /usr/include/... ?
Oui. Tu peux même faire de la compilation pour une machine totalement
différente de celle sur laquelle tu compiles (cross-compilation). Et
c'est heureux, sinon on a un problème de poule et d'œuf.
(Oui, dans l'absolu, car il faut faire attention à la version de gcc :
de très vieux noyaux n'aiment pas être compilés par des gcc très récents.)