1 votes

Développer les pilotes de périphériques Ubuntu

J'essaie d'écrire un pilote de périphérique simple selon le livre "Linux Device Drivers" mais je n'arrive pas à configurer le chemin d'inclusion correct. J'utilise un simple make script. Le système d'exploitation est Ubuntu 14.04 LTS avec le noyau 3.13.0-29-generic sur un vieux PC basé sur intel (Pentium D (EMT/64 bit). J'ai essayé :

I/usr/src/include
-> Error can't find module.h (il devrait y avoir des liens mais il n'y en avait pas)

I/usr/src/linux-headers-3.13.0-29-generic/include and copied .config from /boot/...
-> fonctionne pendant un certain temps mais ne trouve pas les inclusions asm

Dans le répertoire include ci-dessus, j'ai trouvé un répertoire nommé asm-generic, j'ai donc créé un lien asm -> asm-generic . Travaille encore un peu plus loin jusqu'à ce qu'un fichier asm/Thread_info.h est recherchée.
J'en ai trouvé beaucoup dans la structure des répertoires dépendant du matériel. Avant que je ne mette tout le système en désordre en créant d'autres liens, quelle est la bonne façon de configurer le chemin d'inclusion ?

0voto

bain Points 10495

Pour les pilotes du noyau, vous devriez inclure le chemin d'accès /lib/modules/$(uname -r)/build/include . Ne pas utiliser /usr/src/include - qui est le chemin pour les en-têtes de l'espace utilisateur.

Notez que le livre "Linux Device Drivers" est maintenant dépassé (~10 ans) et que beaucoup des exemples ne compileront pas. Il existe un dépôt github qui contient la source originale corrigée pour compiler avec des noyaux plus récents à l'adresse suivante https://github.com/martinezjavier/ldd3

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X