Compiler un module Linux [C] - C - Programmation
Marsh Posté le 17-01-2005 à 13:37:49
http://www.faqs.org/docs/kernel/x145.html
Voir les options de gcc là : http://www.faqs.org/docs/kernel/x204.html
Marsh Posté le 17-01-2005 à 13:44:18
Merci, je regarde. Je n'avais pas précisé plus haut que les options -DMODULE et -D__KERNEL__ ne résolvent pas mon problème. Mais je vais éplucher un peu ta doc
Marsh Posté le 17-01-2005 à 13:51:39
Merci, l'exemple donné compile. Je vais voir par élimination de quoi mon problème venait.
Marsh Posté le 17-01-2005 à 14:00:10
pour inclure printk :
Code :
|
ne pas oublier de compiler avec l'option -D__KERNEL__ (pour le noyau 2.4 du moins)
l'usage veut que l'on écrive comme ceci les fonctions d'insertion/suppression de modules :
Code :
|
pour inclure module_init, module_exit :
Code :
|
Marsh Posté le 17-01-2005 à 14:01:24
++fab a écrit : pour inclure printk :
|
Merci beaucoup
Marsh Posté le 17-01-2005 à 14:05:58
Quand je fais insmod monmodule.o en root, je n'ai aucune sortie sur le terminal. Est-ce normal ? Si j'ai bien compris, je devrais avoir le message de la fonction référencée par module_init, à savoir "Hello kernel".
Marsh Posté le 17-01-2005 à 15:11:09
petit conseil : "tail -f /var/log/messages" ... ca affiche en continue la fin du fichier en question.
Et puis ne pas hésiter à ajouter <1> dans ton printk pour qu'il sorte à l'affichage ... ca lui file une priorité grande.
ex : printk("<1> Hello word ! \n" );
Marsh Posté le 18-01-2005 à 09:36:31
allawos a écrit : petit conseil : "tail -f /var/log/messages" ... ca affiche en continue la fin du fichier en question. |
Bien pratique, ça, merci
Marsh Posté le 12-05-2005 à 20:46:55
allawos a écrit : petit conseil : "tail -f /var/log/messages" ... ca affiche en continue la fin du fichier en question. |
définis dans <linux/kernel.h>
|
http://w3.icpdas.com/reed/cahier/ldd.shtml
Marsh Posté le 12-05-2005 à 20:57:37
Emmanuel Delahaye a écrit : définis dans <linux/kernel.h>
|
Merci, merci, mais depuis ces débuts laborieux j'ai fini, testé, documenté une poignée de modules (mais ça pourra toujours servir )
Marsh Posté le 17-01-2005 à 13:22:32
(Re)bonjour.
Suite à mon topic http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
qui n'a pas eu de succès, je me pose diverses questions relatives à la compilation de modules (drivers) Linux. Sous MDK comme Ubuntu, le simple fait d'inclure un <linux/...> me sort une tripotée d'erreurs de syntaxe, d'utilisation de types non déclarés etc. Je précise que les sources sont bien installées. J'en déduis qu'il doit me manquer quelque chose dans ma compilation, mais quoi ?
Par exemple :
gcc -c test.cpp là-dessus me sort un "printk undeclared". Si je vire les printk ( ) et que je décommente le #include <linux/interrupt.h>, je me retrouve avec un listing d'erreurs dont voici les premières :
In file included from /usr/include/linux/interrupt.h:7,
from main.cpp:3:
/usr/include/linux/smp.h:25: error: syntax error before `)' token
In file included from /usr/include/linux/interrupt.h:10,
from main.cpp:3:
/usr/include/asm/bitops.h: In function `void FASTCALL(...)':
/usr/include/asm/bitops.h:31: error: cannot declare static function inside another function
Bref, que fais-je mal pour que systématiquement mes compilations utilisant les sources du noyau flanchent comme ça ?
PS : compiler avec -I/lib/modules/2.4.22-10mdk/build/include ne change rien.
Si ce post a plus sa place dans OSA, merci de me l'indiquer