あけましておめでとうございます。2021年も組み込み系を中心として情報発信や開発を行っていきたいと思います。
今回は今回はよくあるmbedからのインポート時に生じるエラーの対処方法について紹介します。mbedの機能としてオフライン開発環境のプロジェクトファイルとしてエクスポートできる機能があります。ただ、プロジェクトによってはmbedからエクスポートしたプロジェクトをSW4STM32等にインポートするとエラーでビルドできない場合があります。エラー内容に応じて下記の対策を行います。
■mbed namespace undefined mbedエラー
プロジェクト内にC言語のcファイルがある場合に発生します。mbedはC++言語のため、ファイルを強制的にcppファイルに拡張子を書き換えることで対処することができます。多くの場合、コード自体を書き換える必要はありません。
■nano.specs: attempt to rename spec 'link' to already defined spec 'nano_link' エラー
プロジェクトのプロパティからC/C++Build設定のSettings、Tool Settings、MCU GCC Linkerの設定で、-specs=nosys.specs -specs=nano.specを削除します。
また、プロジェクトフォルダ直下にmakefile.targetファイル内に2か所(debugとrelease)ある
-specs=nosys.specs -specs=nano.specを同様に削除します。
■Undefined reference to `_getpid', to `_kill', and others エラー
暫定対策ではありますが、main.cppファイル内に下記の2行を追加することでエラーを回避させます。
extern "C" int _getpid(void){return 1;}
extern "C" void _kill(int pid){while(1);}
以上のような対策でよくあるmbedからのインポート時のエラーに対処できます。他のエラーに遭遇した場合にはまた追記していきたいと思います。