Androidカーネルコンパイルエラー

Androidカーネルコンパイルエラー

カーネルをコンパイルするときにAndroid Composite Deviceの代わりにEthernetガジェット(CDCイーサネットサポートを含む)またはネットワーク制御モデル(NCM)を選択すると、次のエラーが発生します。

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.cARMアーキテクチャのカーネル/ハードウェアデバッグツールと思われるCoresight Trace Memory Controllerを参照しているようです。

カーネル構成で宣言されていない依存関係が見つかった可能性があります。トラッキングメモリコントローラはAndroid複合デバイスに依存しているように見えますが、カーネルコンフィギュレータはこれを認識しないため、トラッキングメモリコントローラドライバを含む設定を選択できますが、Android複合デバイスではありません。

使用しているカーネルバージョンのオプションは次のとおりです。

  • Coresightの依存関係を満たすには、カーネル設定にAndroid複合デバイスを残してください。または
  • CORESIGHT_*カーネル設定で設定項目を無効にすると、Coresight のサポートが中断されます。

カーネルバージョン3.4.0はもはや活発に開発されなくなり、最新のカーネルバージョンを使用して再現できない場合はバグを報告する意味はありません。アクティブな長期アップストリームサポートを含む最も古いカーネルバージョンは3.16.60です。

関連情報