Mouais.. en fait tu veux savoir comment fonctionne un makefile hein :p et tu veux aussi un cours de C.
Exemple de makefile trivial:
foo: foo.o bar.o
gcc -o foo foo.o bar.o
foo.o: foo.c bar.h
gcc -c -o foo.o foo.c
bar.o: bar.c bar.h
gcc -c -o bar.o bar.c
Ceci definit la cible `foo', dependante de foo.o et bar.o.
foo.o est dependant de foo.c et de bar.h. bar.o est dependant de bar.c et de bar.h.
Pour generer foo, make a besoin de foo.o et de bar.o. Il va donc les generer tous les 2 avec les lignes de commandes donnees dans le makefile (gcc -c -o....). Puis make generera foo (gcc -o foo....)
Maintenant, une fois que c'est fait, si tu edites, modifies et sauves le bar.c et que tu refais make, make s'apercevra que bar.c est plus recent que bar.o. Il re-generera donc bar.o. Puis il s'apercevra ensuite que bar.o est plus recent que foo et il regenerera donc foo. Le tout sans jamais avoir regenere foo.o.
Si tu modifies bar.h, puisque bar.o est declare' comme dependant de bar.h, il sera regenere. Et cette fois-ci, make regenera aussi le foo.o avant de regenerer foo, puisque bar.h est declare comme dependant de foo.o.
Voila a peu pret comment fonctionne un make. Juste une liste de cibles avec leurs dependances, et la maniere de construire les cibles.
Maintenant un fichier `.h', ca ne se compile pas. Dans un .c tu trouveras des '#include <blah.h>'. Ces directives signifient qu'on doit se comporter comme si le contenu de blah.h etait a l'endroit du #include. C'est de l'inclusion sans interpretation du code. Un copier/coller deguise' si tu veux.
Ce que je ne vois pas, par contre, c'est que tu veux dire par "incidence sur le kernel".