Android编译笔记一

在kernel下的make menuconfig中禁用es8323

在kernel中执行make  -j8  firefly-rk3288.img 报错显示如下

看了Kconfig menuconfig .config Makefie 的关系后,依然毫无头绪,顺便贴一下网上看到的四者的关系

Makefile里面的条件编译是由.config中的宏决定的,而.config中的宏是否被注释又是有make menuconfig中选择决定的,而make menuconfig中的是否存在这个配置选项则是由Kconfig决定的,由此串联起来了四者的关系(就目前来说,Makefile和.config的关系没搞明白)

根据报错信息sound/built-in.o: In function `snd_stop_hdmi_in_audio_route_l.part.2':
last.c:(.text+0x42c98): undefined reference to `es8323_codec_set_reg'
sound/built-in.o: In function `snd_start_hdmi_in_audio_route_l.part.3':
last.c:(.text+0x42d14): undefined reference to `es8323_codec_set_reg'
make: *** [vmlinux] Error 1

搜了一下有在下图的两个文件里感觉无意义,先舍弃了

在menuconfig的搜索了es8323中的结果,进入目录kernel/soun/soc/rockchip打开Kconfig文件,找到了config SND_RK_SOC_ES8323是打算注释掉这个选项先试试

报错依旧

根据menuconfig中的搜寻显示,接下来准备把目录/kernel/sound/soc/codecs下的Kconfig也改了

在kernel下编译make -j8  firefly-rk3288.img,报错依旧

在Kconfig中禁掉而是es8323确实在menuconfig中找不到es8323这个选项,进行的第一个验证是在kernel/sound/soc/rockchip的Kconfig中禁掉了es8323(前文有图片)然后就发现menuconfig中没有es8323了,

想进一步验证,取消之前在kernel/sound/soc/rockchip/Kconfig中的禁用,禁掉kernel/sound/soc/codecs/Kconfig中的es8323(前文有图片),然后再menuconfig中发现无效的。所以是在上一个Kconfig中,反映了menuconfig的选项

接下来想着根据报错的信息搜寻'es8323_codec_set_reg'

发现了hdmiin_audio.c这个文件,和报错的信息sound/built-in.o: In function `snd_stop_hdmi_in_audio_route_l.part.2'很像,打开这个文件看看。可能在这个文件中注销报错语句。打开文件后注释掉es8323相关语句,

再kernel中执行编译通过!

并且烧录到板子上后,ES8323的信息没了

猜你喜欢

转载自blog.csdn.net/Sherwin_S/article/details/83342273