2017年3月25日土曜日

esp-idfのmakeで不可解なエラーが出た時の対応方法


検索しても情報が出ないビルドエラーに遭遇しましたが、既存ファイルの削除で回避できました。
同じように詰まる人が居そうなので、情報を共有します。

遭遇したエラー

gatt_clientをmakeしようとしたら、下記のようなエラーが出ました。

cd ~/esp/esp-idf/examples/bluetooth/gatt_client
make
LD gatt_client_demo.elf
/home/asuki/esp/esp-idf/examples/bluetooth/gatt_client/build/freertos/libfreertos.a(tasks.o):(.literal.prvDeleteTCB+0x14): undefined reference to `vPortCleanUpTCB'
/home/asuki/esp/esp-idf/examples/bluetooth/gatt_client/build/freertos/libfreertos.a(tasks.o): In function `prvDeleteTCB':
/home/asuki/esp/esp-idf/components/freertos/./tasks.c:4421: undefined reference to `vPortCleanUpTCB'
collect2: error: ld returned 1 exit status
/home/asuki/esp/esp-idf/make/project.mk:322: ターゲット '/home/asuki/esp/esp-idf/examples/bluetooth/gatt_client/build/gatt_client_demo.elf' のレシピで失敗しました
make: *** [/home/asuki/esp/esp-idf/examples/bluetooth/gatt_client/build/gatt_client_demo.elf] エラー 1

対応方法

esp-idfの更新

cd ~/esp/esp-idf
git pull origin master
git submodule update --recursive --remote

設定ファイルの削除

sdkconfig.defaultはプロジェクトの標準設定を指定するファイルなので、消してはいけません。
cd ~/esp/esp-idf/examples/bluetooth/gatt_client
rm sdkconfig sdkconfig.old

build済みファイルの削除

cd ~/esp/esp-idf/examples/bluetooth/gatt_client
rm -r build


上記の対応後にmakeを実行

cd ~/esp/esp-idf/examples/bluetooth/gatt_client
make


ビルドに成功しました。
古い設定ファイルが悪さをしていたようです。

共有する情報は以上です。

変更履歴

2017/07/31
submodule updateのコマンドに「--recursive --remote」のオプションを追加しました。

0 件のコメント :