Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Entetes du noyau
Envoyé par: Psyko

Bonjour à tous,
Ce n'est pas vraiment un probleme mais plus une question que je me pose:
Que sont "les entetes du noyau" au juste ?

Pour un package, je peut comprendre (dependances, version, developpeur) mais je ne vois pas en quoi cela est necessaire pour le noyau.

Donc j'aimerais savoir ce que contiennent ces fameuses entetes et ce à quoi elles servent. (Par exemple, je sais que pour compiler quelque chose à partir de ses sources, on a besoin des entetes mais je ne comprends pas pourquoi.)

Poste le Saturday 8 May 2004 16:21:31
Répondre     Citer    
Re: Entetes du noyau
Envoyé par: Teotihuacan

Salut,

Bon, 1 ou 2 truc de programmation :

Quand tu fais un programme, il ne va pas tenir forcément dans un seul fichier.
Tu vas le séparer en plusieurs fichiers selon un critère quelconque, et dans chaque fichier, tu as des focntions, des variables, des types définis,...

Quand dans un fichier source, tu fais appel à une fonction, le compilateur va regarder si dans ce même fichier, cette fonction n'y est pas.....
et même plus : il ne regarde que les fonction définies plus haut, pas celles juste après.... quel fénéant !
Si la fonction n'y est pas... il ne sait plsu quoi compiler. Il y a une erreur de compilation. (il n'a besoin dans un premier temps que de la déclaration, pas du code en lui-même)

Il va jusqu'au début du fichier source : donc finalement, c'est l'entête du fichier
La méthode est donc plutôt simple : déclarer toutes les fonctions nécessaires tout au début du fichier.
Le problème : c'est pas gérable quand il y a plein de fichiers différent... et puis, c'est la loose... faut pas faire ça, c'est comme croiser les effluves... c'est mal.... sa pu sai pa modulaire
Donc, la solution : mettre toutes ces déclaration d'entête dans un fichier séparés : d'où le nom "entête". (et à la limite, un fichier d'entête pour un fichier source)
Et dans chaque fichier source, on ne met qus les référence au(x) fichier(s) d'entête correspondants. (y compris le sien)

C'est le même raisonnement pour les variables (globales), les types (et classes)...

Donc on met en génral dans les entêtes toutes les déclaration de variables, fonctions, types... sans y mettre forcément le contenu des focntions.


Pour le noyau, c'est pareil, il y a des fichiers sources, et pour compiler, il y a des fichiers d'entête.

Voilà.. a+ smiling smiley


Poste le Saturday 8 May 2004 16:56:50
Répondre     Citer    
Re: Entetes du noyau
Envoyé par: Psyko

Ok merci, j'ai pigé :-)
(En plus ça tombe bien, j'adore la prog :-D )

Donc quand on compile un package et que le compilo tombe sur une fonction qui n'est declarée ni dans le fichier en cours de compilation ni dans le le fichier de declaration des fonctions du package lui-même (car je suppose que chaque package possede son propre fichier de declaration) , il va voir dans les fichiers de declaration des fonctions du noyau....

C'est sur que du coup, sans les entetes, on ne va pas loin...

Poste le Saturday 8 May 2004 17:43:47
Répondre     Citer    
Re: Entetes du noyau
Envoyé par: Teotihuacan

Je ne pense pas que le compilateur aille chercher dans le entête du noyau.... du moins, pas si on ne le lui demande pas explicitement.

Exemple concret pour voir si on est bien d'accord :
j'ai pris un fichier source au hazard, tout en haut, on voit :

#include "collectionbrowser.h"
#include "directorylist.h"
#include "metabundle.h"
#include "sqlite/sqlite.h"
#include "statusbar.h"
#include "threadweaver.h"

#include <unistd.h>
#include <qcstring.h>
#include <qdragobject.h>
#include <qmessagebox.h>
#include <qptrlist.h>

Les entêtes entre "", sont les entêtes par rapport au dossier actuel.
Les entêtes entre <>, sont les entêtes du système. (pas forcément du noyau)


Il se peut qu'un programme fasse allusion à des entêtes du noyau.
Mais en fait, le compilateur, il faut tout lui dire, il fait rien tout seul (ou de manière assez limitée).


Pour les packages, c'est différent.
Les packages (à part les packages basés sur les sources) sont précompilés. Il n'y a donc pas de problème de compilation.
Mais s'il est compilé... il n'empèche qu'il a besoin de certaines librairies (pas forcément des entêtes)...
Mais dans ce cas, c'est le concepteur du packages qui dit quelles librairies sont nécessaires à tel programme/package... et c'est en génréral, selon les trucs qui lui a fallu pour compiler...

Je me trompe peut être, mais je pense qu'un package (non source) a rarement besoin de paquages d'entête.... par contre, il a besoin des librairies associées. (la partie compilée).

Enfin, bon.... je vois les choses comme ça...


A+


Poste le Saturday 8 May 2004 18:08:31
Répondre     Citer    
Re: Entetes du noyau
Envoyé par: alveric

Yarg ! Tu insères tes en-têtes perso avant les en-têtes systèmes ? C'est un coup à se faire avoir, ça...

Poste le Tuesday 11 May 2004 00:23:35
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Entetes du noyau
Posez dans ce forum les questions qui ne trouvent pas place dans les autres...

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons