SNSへはこちら

MSP430用のgccを自前でビルドする(gcc-9.1対応版)

以前から以下のような記事で MSP430 マイコンを扱っていたのですが、なんの巡り合せか研究で使うことになりました。

最終的には「IDE 見つけたぞわーい!」って言って終わっているのですが、月日が経つに連れて IDE を嫌いになりコマンドライン至上主義的な考えが見についてしまっていることに気が付きましたww

これまでは、有志によって配布されている既存のパッケージを実行することで gcc たちをインストールしていました。が、そのバージョンは gcc7系 だとか、gcc-8系 です。今や gcc-9.1 が出ているのですから、最新版が欲しいですよね。

そこで、自前でビルドしてみっかとなったわけです。

やるぞ

ということで、せっかくなのでビルドをしたいと思います。相変わらず Mac 用ですが、多分 Ubuntu でも出来ると思います。Windows の人は頑張って。
僕のマシンでは大体20分[要出典]くらいで出来たとともいます。きっとおそらく多分。

使ったツールチェインのバージョンはこちら。

  • binutils 2.32
  • gcc 9.1.0
  • newlib 3.1.0

共通のコマンド

このブログの読者さんなら分かると思いますが、ビルドは例えば以下のように共通したルーティーンで行っています。

$ cd binutils-2.32 # binutilsのディレクトリに移動
$ mkdir build_msp430 # msp430ビルド用のディレクトリを作成
$ cd build_msp430 # そこに移動
$ ../configure ... # 適切なconfigureをしてビルド用ファイルを生成
$ make -j16 # ビルド開始 なんとなく16並列で
$ make install # ビルドが終わったらインストール。パーミッションで怒られたらsudoさんに頼る

以下に示すのは ../configure コマンドの詳細です。それぞれのツールチェインで当てはめて実行してください。

binutils

$ ../configure --target=msp430-elf --prefix=/usr/local/cross/msp430-elf --disable-werror --disable-nls --disable-bootstrap

gcc(1回目)

まずは C 言語用の gcc や libgcc 等を作るところから。C++ 用の g++ は newlib が必要になるので一旦パスします。

$ PATH=/usr/local/cross/msp430-elf/bin:$PATH # PATHを通す
$ ../configure --target=msp430-elf --prefix=/usr/local/cross/msp430-elf --disable-werror --disable-nls --disable-bootstrap --disable-libssp --enable-languages=c

newlib

詳しくは(あまり詳しくないが)この記事を参照あれ。

$ ../configure --target=msp430-elf --prefix=/usr/local/cross/msp430-elf --disable-werror --disable-bootstrap --disable-newlib-supplied-syscalls --enable-newlib-reent-small --disable-newlib-fvwrite-in-streamio --disable-newlib-fseek-optimization --disable-newlib-wide-orient --enable-newlib-nano-malloc --disable-newlib-unbuf-stream-opt --enable-lite-exit --enable-newlib-global-atexit --enable-newlib-nano-formatted-io --enable-target-optspace  --disable-nls

gcc(2回目)

お待ちかねの C++ 用コンパイラ g++ のビルドと libstdc++ のビルドです。MSP430 マイコンで C++17 が使えるなんてワクワクしてきますね。

$ ../configure --target=msp430-elf --prefix=/usr/local/cross/msp430-elf --disable-werror --disable-nls --disable-bootstrap --disable-libssp --enable-languages=c,c++ --with-newlib

ヘッダ類のインストール

ここまで来た方々、お疲れ様です。ここからは大体ビルドターゲットに合わせたリンカスクリプト類の作成になるのですが、製造元の TI からこれらをダウンロードできますので利用させてもらいましょう。

ページ下部の msp430-gcc-support-files-1.207.zip をダウンロードし、展開してください。
そうしたら、include の中身を /usr/local/cross/msp430-elf/msp430-elf/include 内にコピーすれば完了です。

これにて、C と C++ のコンパイル環境が出来ました。最新版が使えるということで満足です。