编译内核时,如果我选择Ethernet Gadget(具有CDC以太网支持)或网络控制模型(NCM)而不是Android复合设备,则会收到错误:
drivers/built-in.o:coresight-tmc.c:function tmc_etr_store_out_mode: error: undefined reference to 'usb_qdss_close'
drivers/built-in.o:coresight-tmc.c:function tmc_etr_store_out_mode: error: undefined reference to 'usb_qdss_open'
drivers/built-in.o:coresight-tmc.c:function tmc_disable: error: undefined reference to 'usb_qdss_close'
drivers/built-in.o:coresight-tmc.c:function tmc_enable: error: undefined reference to 'usb_qdss_open'
drivers/built-in.o:coresight-tmc.c:function tmc_enable: error: undefined reference to 'usb_qdss_close'
Makefile:878: recipe for target '.tmp_vmlinux1' failed
make: *** [.tmp_vmlinux1] Error 1
内核版本:3.4.0
工具链:google arm-linux-androideabi-4.6
答案1
coresight-tmc.c
似乎指的是Coresight Trace Memory Controller,它似乎是ARM架构上的内核/硬件调试工具。
您可能在内核配置中发现了未声明的依赖项:跟踪内存控制器似乎依赖于 Android 复合设备,但内核配置器不知道这一事实,因此允许您选择包含跟踪内存控制器驱动程序的配置但不是 Android 复合设备。
您所使用的内核版本的选项是:
- 将 Android 复合设备保留在内核配置中以满足 Coresight 的依赖性,或者
- 禁用
CORESIGHT_*
内核配置中的配置项,从而放弃 Coresight 支持。
由于内核版本 3.4.0 不再处于积极开发中,因此除非您可以使用较新的内核版本重现该错误,否则报告该错误可能没有意义:具有活跃长期上游支持的最旧内核版本是 3.16.60时间。