OVH Cloud OVH Cloud

compil de différents noyaux et dépendances vis à vis de /usr/include/linux

2 réponses
Avatar
pfml
bonjour,

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)

je suis avec une kubuntu et je veux compiler des noyaux 2.6 et 2.4
la compilation du noyau s'effectue au sein de l'arbo des sources en
utilisant éventuellement les .h du compilo bien sur (les seuls fichiers
en dehors de l'arbo)

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

après avoir compiler un noyau, j'effectue un
find . | xargs grep /usr/include/linux
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

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/... ?


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

2 réponses

Avatar
Sylvain Sauvage
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 b uild ?
(je suppose que oui évidemment mais des erreurs de compilation me fo nt
douter du contraire)



Les sources du noyau sont indépendantes de /usr/include.

je suis avec une kubuntu et je veux compiler des noyaux 2.6 et 2.4
la compilation du noyau s'effectue au sein de l'arbo des sources en
utilisant éventuellement les .h du compilo bien sur (les seuls fichi ers
en dehors de l'arbo)



La compilation est faite avec -nostdinc, les include du compilateur (et
du noyau évidemment) sont ajoutées après.

sur mon système, /usr/include/linux contient les .h installés p ar
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, q ui,
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/l inux/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 annex es,
des _scripts_, comme fixdep. Remarque aussi que gcc est lui-même compi lé
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.)

--
Sylvain Sauvage
Avatar
pfml
Sylvain Sauvage a écrit :
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.



ça me rassure

je suis avec une kubuntu et je veux compiler des noyaux 2.6 et 2.4
la compilation du noyau s'effectue au sein de l'arbo des sources en
utilisant éventuellement les .h du compilo bien sur (les seuls fichiers
en dehors de l'arbo)




La compilation est faite avec -nostdinc, les include du compilateur (et
du noyau évidemment) sont ajoutées après.



ok

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)



ok

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.)




ben là, chapeau : c'est pile les réponses claires que j'attendais

merci !



--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact