|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Étudiant Inscription : février 2011 Messages : 32 ![]() |
Bonjour,
Lors de la compilation d'un programme en C qui a pour but de créer un module noyau, j'ai cette erreur de compilation : linux/module.h : No such file or directory Bien évidemment, cela signifie que la librairie module.h est manquante. Elle se trouve normalement dans le répertoire /usr/include/linux . Cette librairie est normalement installée suite à la compilation du noyau et de ses headers. J'ai donc réinstallé les packets linux-headers-2.6.26 ... correspondant à mon kernel, le fichier module.h est désormais présent mais pas à la bonne place (en l'occurrence dans le répertoire usr/src/linux-headers-2.6.26-2-686/include/linux ) - où ais-je fais une erreur ? - faut-il monter les répertoires pour rendre accessible la librairie ? si oui, comment ? existe-t-il un moyen de vérifier que toute l'installation est correcte ? Grazie mille ! |
|
|
10
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 536 ![]() |
tu peux faire un lien symbolique entre le chemin/fichier attendu et le fichier réel tout simplement.
et bien sur tu dois aussi t'assurer que le PATH est suffisament renseigné pour trouver les dits fichiers ou liens . |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : mai 2006 Messages : 179 ![]() |
Bonjour,
L'option -I de gcc vous permet d'aller chercher les headers dans un autre répertoire que les répertoires par défaut. |
|
11
|
|
|
#4 |
|
Membre à l'essai
![]() Étudiant Inscription : février 2011 Messages : 32 ![]() |
Bonjour,
j'ai créé le lien symbolique et ai modifié le PATH sans résultat (peut-être m'y suis-je mal pris). Effectivement, j'avais oublié cette fameuse option -I qui fonctionne bien. cependant un nouveau problème est apparu : mon fichier module.h désormais accessible par le compilateur s'appuie sur différentes librairies qui sont présentes dans le même répertoire mais qui restent pourtant introuvables !? Que faire ? Merci de vos réponses. |
|
|
10
|
|
|
#5 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : octobre 2008 Messages : 1 375 ![]() |
Si ce sont vraiment des librairies (et pas des headers), alors c'est le linker qui les cherche (pas le compilateur) et l'option est -L (pas -I).
|
|
|
10
|
|
|
#6 |
|
Membre à l'essai
![]() Étudiant Inscription : février 2011 Messages : 32 ![]() |
j'ai essayé avec les deux options mais le résultat reste le même, d'autres idées ?
|
|
|
01
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : mai 2006 Messages : 179 ![]() |
Attention, pour l'option -L pdt le link, il faut faire pointer vers les fichiers .so / .ko (librairies dynamiques), pas vers les .h.
Vous devriez écrire votre commande gcc. |
|
10
|
|
|
#8 |
|
Membre à l'essai
![]() Étudiant Inscription : février 2011 Messages : 32 ![]() |
Pour ce qui est de la création de module noyau, il est au final préférable de travailler avec les sources du noyau, dans mon cas linux-source-2.6.26 et non seulement avec les headers.
Ensuite, j'ai recompilé le noyau à partir de ces fichiers sources fraîchement téléchargés et ça fonctionne. |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com