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を使わない限りは,大多数の人には関係のない話なので,元記事では更新せずに,別記事として紹介しようと思う.

セットアップ

  1. yagartoの最新版をDLする.
    http://sourceforge.net/projects/yagarto/
  2. 既存の開発環境にあるyagartoをアンインストール/フォルダごと削除
  3. プロジェクトのMakefileを変更する.
    1. まずは適宜gccのバージョンに相当する部分を書き換える.
    2. 新しいバージョンのyagartoでは,crt0.oが同梱されなくなった.
      これはビルドに全く必要ないファイルだが,正しく設定しないとldがcrt0.oを探しに行ってしまい,ファイルがないというふうに怒られる.
      そこで,LDFLAGSに追記.
      LDFLAGS+= -nostartfiles

      これで標準のスタートアップファイルを見に行かなくなるため,crt0.oがないと怒られることがなくなる.
  4. これだけでは,今度は__dso_handleが定義されていないと怒られるので,適当なファイル(僕はtweak.cpp)に追記.
    void *__dso_handle=0;

    もちろんextern "C"してもよいが,必要はなかった.
    こいつはshared object関係のものなので,STM32の一般的なマイコン開発では必要ないため,このようにしてldを黙らせて構わないはず.
  5. ここまでやったらあとはcleanを忘れずにしてリビルド.

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-15 (月) 11:24:54 (1721d)