arrière-plan
Lorsque l'auteur compilait ko
le module, j'ai rencontré l'erreur suivante :
( modpost
les invites sont toutes des fonctions couramment utilisées, telles que _printk
, kfree
, kmalloc
, memset
etc.)
ERROR: modpost: "__raw_copy_from_user" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "_printk" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "nonseekable_open" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "kmalloc_caches" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "kmalloc_trace" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "kfree" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "warn_slowpath_fmt" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "memset" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
ERROR: modpost: "__register_chrdev" [/home/geng/Item/nscscc_drivers/lcd/lcd.ko] undefined!
J'ai déjà soupçonné qu'il y avait quelque chose qui n'allait pas avec mon Makefile, mon compilateur croisé, etc...
solution
Le problème réside dans le .config
fichier de code source du noyau Linux !
CONFIG_TRIM_UNUSED_KSYMS
Éteignez-le ! Pensez à revoir le code source Linux après modification make
! Pensez à revoir le code source Linux après modification make
!
Il peut être modifié via menuconfig. Voici le menuconfig de MIPS à titre d'exemple :
Vous pouvez aussi directement .config
fichier, mettre :
CONFIG_TRIM_UNUSED_KSYMS=y
Remplacez directement par
# CONFIG_TRIM_UNUSED_KSYMS is not set
Pensez à revoir le code source Linux après modification make
! Pensez à revoir le code source Linux après modification make
!