2014-01-12 46 views
0

我正在学习有关尝试为ADC实现SPI声音驱动程序的Linux内核驱动程序。 代码可能不起作用,但它会编译。发生在链路 第一个问题,即报告以下错误:无法链接linux内核模块:警告:“snd_device_new”undefined

WARNING: "snd_pcm_lib_ioctl" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_device_new" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_pcm_lib_preallocate_pages_for_all" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_pcm_set_ops" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_pcm_new" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_card_register" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_card_create" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_pcm_hw_constraint_integer" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_pcm_lib_malloc_pages" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_pcm_lib_free_pages" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 
WARNING: "snd_card_free" [/home/pi/rpi/gpio/module/spi-mcp3002.ko] undefined! 

的源代码是https://github.com/mpromonet/rpi/blob/master/gpio/module/spi-mcp3002.c并且生成文件是https://github.com/mpromonet/rpi/blob/master/gpio/module/Makefile

我想一些内核选项是没有设置,但哪一个?

我尝试使用来查看禁用的选项zcat /proc/config.gz | grep SND | grep的“^#”

# CONFIG_SND_DYNAMIC_MINORS is not set 
# CONFIG_SND_VERBOSE_PRINTK is not set 
# CONFIG_SND_DEBUG is not set 
# CONFIG_SND_OPL3_LIB_SEQ is not set 
# CONFIG_SND_OPL4_LIB_SEQ is not set 
# CONFIG_SND_SBAWE_SEQ is not set 
# CONFIG_SND_EMU10K1_SEQ is not set 
# CONFIG_SND_AC97_POWER_SAVE is not set 
# CONFIG_SND_ARMAACI is not set 
# CONFIG_SND_ATMEL_SOC is not set 
# CONFIG_SND_DESIGNWARE_I2S is not set 
# CONFIG_SND_SOC_ALL_CODECS is not set 
# CONFIG_SND_SIMPLE_CARD is not set 

我会看内核源代码什么的做这些符号被定义......但如果有人知道我也许可以节省一些内核构建:)

回答

1

我可能使在内核自身之前构建模块时出错。的符号,其中不Module.symvers

重新执行模块的安装和重新引导解决了这个问题:

make 
make module_install 
reboot