fundo
Quando o autor estava compilando ko
o módulo, encontrei o seguinte erro:
( modpost
Os prompts são todas funções comumente usadas, como _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!
Certa vez, suspeitei que havia um problema com meu Makefile, compilador cruzado, etc.
solução
O problema está no .config
arquivo de código-fonte do kernel Linux!
CONFIG_TRIM_UNUSED_KSYMS
Apenas desligue ! Lembre-se de revisar o código-fonte do Linux após a modificação make
! Lembre-se de revisar o código-fonte do Linux após a modificação make
!
Ele pode ser modificado através do menuconfig. Aqui está o menuconfig do MIPS como exemplo:
Você também pode .config
arquivar diretamente, colocar:
CONFIG_TRIM_UNUSED_KSYMS=y
Substitua diretamente por
# CONFIG_TRIM_UNUSED_KSYMS is not set
Lembre-se de revisar o código-fonte do Linux após a modificação make
! Lembre-se de revisar o código-fonte do Linux após a modificação make
!