URL: https://linuxfr.org/forums/linux-noyau/posts/compiler-un-module Title: Compiler un module Authors: mcoavoux Date: 2007年05月30日T16:03:05+02:00 Tags: Score: 0 Bonjour, J'ai des sources pour le driver de carte Raid Adaptec. J'ai lu les conseils pour les compiler afin de faire un module (.ko) mais il y a quelque chose qui doit m'échapper car cela ne marche pas. J'ai essayé sous Gentoo, mais si quelqu'un c'est faire la manipulation sous un autre système d'exploitation (sauf windows rhel, et suse) cela ne pose pas de problème. Voici la notice : The kernel has to be configured ------------------------------- Make sure that your kernel is configured. If you do not have .config file in your kernel root, then your kernel is not configured. If you have that file but you're unsure if your kernel is configured, then run "make oldconfig". You need a configuration file in order to configure the kernel. You get one by manually configuring the kernel ("make menuconfig") or by copying a provided one from your vendor/distributor or by getting the one currently used by your running kenrel. The latter two choices work as follows: copy the config file of your desire from configs/ directory to . and rename it ".config". Then run "make oldconfig". Or you can copy /proc/config.gz (if present, not all kernels support this) to . and then unzip it using gunzip(1) and then rename it to ".config". Then run "make oldconfig". ----------------------- C'est pour la configuration du noyau, j'ai fais la commande : emerge gentoo-source pour télécharger les sources du noyau. Puis j'ai copier le .config dans le répertoire ou j'avais mes sources (drv_linux). Déjà il y a une chose que je ne comprend pas bien c'est si je dois dans mon cas configurer le noyau ? Je pense que non, et le make menuconfig me servirais à rien puisque le module n'est pas par défaut dans le noyau. Puis pour les noyaux 2.6 : cd <driver source directory> mv Makefile Makefile.2_4 mv Makefile.2_6 Makefile make -C /usr/src/linux M=`pwd` The driver will be "adp94xx.ko". To insert it into the kernel, do: insmod adp94xx.ko J'ai fait les commandes mv (je n'ai pas bien compris l'utilité) puis j'ai essayé de faire la commande make et là : No rule to make target 'usr/src/....' Stop Je me suis documenté, cette commande make devrait me compiler un fichier ko en prenant en compte toutes les dépendances que les fichiers ont besoins (juste ?) Je me suis alors dis qu'il fallait peut être compilé les sources .c avant, j'ai alors essayé cette commande : gcc -DMODULE -D__KERNEL__ -O6 -c adp94xx_sata.c Mais là le compilateur me renvoi un grand nombre d'erreur. Je suis allé voir du côté du source c Et je pense que d'apres les appels des fichiers je dois mettre mon source à un endroit spécifique, mais j'ai regardé si je possédé bien tout les fichiers c et il s'avere que non . Si quelqu'un pouvait m'éclairer , car là je suis complétement perdu Merci