当我尝试为 Samsung SM-G360T / SM-G360T1 编译内核时,我在两个不同的内核源存储库中遇到相同的问题。
我正在使用的内核:
https://github.com/MSM8916-Samsung/android_kernel_samsung_coreprimeltexx(应该是有货的)
https://github.com/ShinySide/SM-G360T1_kernel(大量编辑)
第一期,参考这里,通过替换一行代码解决了。
在btusb.c
:
static int reset = 1;
变成
static bool reset = true;
我将其包含在内仅供参考,以防它与最终结果有关,或者其他人遇到类似的问题。该特定手机型号的内核的文档并不多,但它是一个非常流行的型号。这里列出了我没有尝试使用的此问题的另一个解决方案。
那部分已经解决了。对于实际问题:
drivers/built-in.o: In function `btusb_probe':
/android_kernel_samsung_coreprimeltexx/drivers/bluetooth/btusb.c:1368:
undefined reference to `get_rome_version'
/android_kernel_samsung_coreprimeltexx/drivers/bluetooth/btusb.c:1373:
undefined reference to `rome_download'
/android_kernel_samsung_coreprimeltexx/Makefile:807: recipe for target
'vmlinux' failed
make[1]: *** [vmlinux] Error 1
Makefile:130: recipe for target 'sub-make' failed
make: *** [sub-make] Error 2
我确信这将被标记为重复问题,但它看起来像rome_download
和是在和get_rome_version
中定义的(或至少引用的,请原谅我,我很糟糕)。include/net/bluetooth/bluetooth.h
drivers/bluetooth/ath3k.c
如果我注释掉几行编辑语句,我可以在没有函数version
调用的变量的情况下编译代码btusb_probe
。显然,这破坏了某种功能,但它似乎有效。
我在这里先向您的帮助表示感谢。我比平常更啰嗦一些,因为与该设备的其他版本相比,该特定型号的设备具有独特的有限信息/开发。
答案1
不久前,但对于所有需要它的人:还要在内核中启用 CONFIG_BT_ATH3K。 “Atheros 固件下载驱动程序”位于 -> 网络支持 (NET [=y]) -> 蓝牙子系统支持 (BT [=y]) -> 蓝牙设备驱动程序