Linux
Android核心編譯錯誤
編譯核心時,如果我選擇乙太網小工具(支持 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
coresight-tmc.c
似乎是指Coresight Trace Memory Controller,它似乎是ARM架構上的核心/硬體調試工具。您可能在核心配置中發現了未聲明的依賴關係:Trace Memory Controller 似乎依賴於 Android 複合設備,但核心配置器不知道這一事實,因此允許您選擇包含 Trace Memory Controller 驅動程序的配置但不是 Android 複合設備。
您使用的核心版本的選項是:
- 將 Android 複合設備保留在您的核心配置中以滿足 Coresight 的依賴性,或者
- 禁用
CORESIGHT_*
核心配置中的配置項,因此放棄 Coresight 支持。由於核心版本 3.4.0 不再處於積極開發中,因此報告該錯誤可能沒有意義,除非您可以使用更新的核心版本重現它:具有長期活躍上游支持的最舊核心版本是 3.16.60時間。