ARM(STM32)
yagartoのGCCを4.7以降にする際の注意 - STM32 †
概要 †
STM32の開発にyagartoを使用する際に,現在公式で配布されている最新版(gcc-4.7.2ベース)を使う際には若干の注意が必要である.
拙作の開発環境C++を使ったSTM32のプログラミング・デバッグ環境を整える - STM32では,その辺のめんどくささを回避するべく,gcc-4.6.2ベースである20111119版を使っているが,最新版を使用する方法がわかってきたので公開しようと思う.
とは言っても,constexprなどのC++11なfeatureを使わない限りは,大多数の人には関係のない話なので,元記事では更新せずに,別記事として紹介しようと思う.
セットアップ †
- yagartoの最新版をDLする.
http://sourceforge.net/projects/yagarto/
- 既存の開発環境にあるyagartoをアンインストール/フォルダごと削除
- プロジェクトのMakefileを変更する.
- まずは適宜gccのバージョンに相当する部分を書き換える.
- 新しいバージョンのyagartoでは,crt0.oが同梱されなくなった.
これはビルドに全く必要ないファイルだが,正しく設定しないとldがcrt0.oを探しに行ってしまい,ファイルがないというふうに怒られる.
そこで,LDFLAGSに追記.
これで標準のスタートアップファイルを見に行かなくなるため,crt0.oがないと怒られることがなくなる.
- これだけでは,今度は__dso_handleが定義されていないと怒られるので,適当なファイル(僕はtweak.cpp)に追記.
もちろんextern "C"してもよいが,必要はなかった.
こいつはshared object関係のものなので,STM32の一般的なマイコン開発では必要ないため,このようにしてldを黙らせて構わないはず.
- ここまでやったらあとはcleanを忘れずにしてリビルド.