• # Importance du -I

    Posté par . En réponse au message Problème de compilation d'un module linux. Évalué à 3.

    Salut,

    Donc on va faire rapide. La programmation user land / kernel land sont deux choses complétement différentes.
    En kernel land, tu n'as pas de libc ni aucune autre lib pour t'aider, juste l'API du kernel.

    Donc si tu veux compiler un module, il faut d'abord définir les symboles MODULE et __KERNEL__ pour préciser à que tu travailles en kernel land puis il faut utiliser les fichiers headers du kernel, d'ou le -I....

    En effet, tu ne vas pas utiliser tes includes standards pour un code qui n'a aucun lien avec la libc. Si tu utilises tes includes standards, tu vas te retrouver avec une tonne de warning par rapport au type etc .. et c'est logique :)

    Et quand tu regardes dans /lib/modules/`uname -r`/ :
    [binarym@gco]:~% sudo ls -l /lib/modules/2.4.24-grsec
    lrwxrwxrwx 1 root root 34 Apr 16 2004 build -> /usr/src/linux-2.4.24-grsec-athena

    Il s'agit en fait d'un lien vers les sources de ton kernel.
    D'ou l'importance d'avoir un kernel tree correctement configuré et en accord avec le kernel que tu fais tourner sur ta machine.
    J'espère que tu as compris avec ces quelques explications.
    Si t'as d'autres soucis, tu peux me mailler ou m'envoyer un message via le système de linuxfr.