Dans mon projet, j'utilise un pilote char pour communiquer entre l'espace utilisateur et l'espace noyau. J'utilise la fonction copy_to_user(void user *to, const void *from, unsigned long n)
pour copier des données de l'espace noyau vers le tampon d'espace utilisateur. Nous pouvons trouver cette fonction sous le fichier d'en-tête #include <asm/uaccess.h>
. J'ai respecté le projet en utilisant Linux Kernel version 4.4.0-59-generic, Ubuntu OS version 16.04 LTS et son fonctionnement correct sans erreur ni avertissement. Je reçois la sortie désirée.copy_to_user non défini dans la version du noyau linux 4.12.8
J'ai compilé le même projet en utilisant Linux noyau version 4.12.8, Ubuntu OS version 16.04.2 LTS et il me jette un avertissement lors de la compilation WARNING: "copy_to_user" [/home/ldrv1/Desktop/Vijay/code/build/uts.ko] undefined!
. Quand je fais insmod de mon module je reçois l'erreur comme suit insmod: ERROR: could not insert module uts.ko: Unknown symbol in module
. Je pense que le fichier d'en-tête #include <asm/uaccess.h>
est toujours supporté dans la version du noyau 4.12.8 sinon j'aurais eu une erreur fatale: pas d'erreur de fichier ou de répertoire lors de la compilation. J'ai essayé de mettre à jour les en-têtes du noyau Linux en utilisant la commande apt-get install linux-headers-$(uname -r)
et je suis la réponse suivante:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-headers-4.12.8
E: Couldn't find any package by glob 'linux-headers-4.12.8'
E: Couldn't find any package by regex 'linux-headers-4.12.8'
Cette version OS 16.04.2 LTS a linux-headers-4.10.0-35. Comment puis-je me débarrasser de cet avertissement? Suggestions et soutien appréciés. Si plus d'informations sont nécessaires, n'hésitez pas à demander.
Merci Bronislav. Votre solution a fonctionné. –
Vous êtes les bienvenus. –