こんにちわ。青木です。
今回は、こんにちわの気分ですw。
個人的に進めていたプロジェクト「MacでRXマイコンの開発環境を構築する」の続編です。
前回のブログでクロスコンパイラの環境を構築するためのコンパイラ環境の流れを紹介しました。今回は、いよいよ、RXマイコンのクロスコンパイラをソースからコンパイルする方法を紹介します。
ルネサスエレクトロニクスの開発環境にe2Studioの紹介ページがあります。このページの真ん中あたりに対応コンパイラ一覧があり、その中にGNUが使えるとなっています。そのGNUツールはここから無償でダウンロードすることができると記載されています。その無償でダウンロードできるソースを使ってクロスコンパイラを作成します。
ダウンロードするには、ユーザー登録が必要です。
ユーザー登録が済むとメールでユーザー名とパスワードが送られてくるので、ログインしてソースをダウンロードします。
トップ画面にあるダウンロードのボタンをクリックするとwindows用の実行ファイルしかダウンロードできないため、上にあるメニューからソースコードをダウンロードします。ToolChainsの方をダウンロードしてもソースコードはないので、間違えないように。
ダウンロードページに行くと
・Source Code of GCC
・Source Code of Newlib
・Source Code of Binutils
・Source Code of GDB
の4つあります。最後のGDBは、デバッグの環境を構築するときに必要にデータで、今回のクロスコンパイラーの環境作成では、紹介しませんので、ダウンロードしなくても良いです。
試したバージョンは、GCC for Renesas v4.8.4.201703-GNURXです。このブログを書いているときはGCC for Renesas v4.8.4.201801-GNURXとバージョンが上がっていますが、一つ前との差分はここに書いてあり、大きなところは、RX64Mに対応したということぐらいです。
上3つをダウンロードしてGNU Toolsにあるビルド方法を参照しながら環境を構築していきます。
1.RXのツールチェーン用のディレクトリを作成します。ここでは、Downloads直下に作っています。
mkdir RX-ToolChainv15.02 cd RX-ToolChainv15.02 mkdir source mkdir build mkdir prefix
2.先ほどダウンロードしたソースコードをディレクトリsourceに移動または、コピーします。ここでは、コビーしています。
コピーしたら解凍します。
cp /Users/maaoki/Downloads/binutils-2.24_rx_v15.02.tar.bz2 source cp /Users/maaoki/Downloads/newllib-2.2.0_rx_v15.02.tar.bz2 source cp /Users/maaoki/Downloads/gcc-4.8.4_rx_v15.02.tar.bz2 source cd source tar -jxvf binutils-2.24_rx_v15.02.tar.bz2 tar -jxvf newlib-2.2.0_rx_v15.02.tar.bz2 tar -jxvf gcc-4.8.4_rx_v15.02.tar.bz2
ここまで、順調にできていると思いますが、ここから、処理時間がかかるので、時間に余裕があるときに行うことをお勧めします。mac book airの性能で8h程度かかっています。
3.binutilsをインストールします。
cd ../build mkdir binutils cd binutils /Users/maaoki/Downloads/RX-ToolChainv15.02/source/binutils-2.24/configure --target=rx-elf --prefix=/Users/maaoki/Downloads/RX-Toolchainv15.02/prefix/ --enable-maintainer-mode --disable-werror make make install
RX-Toolchainv15.02/prefix/binにrx-elf-asがあり、致命的なエラーがないかきり問題なさそうです。
エラーで進まないようならroot権限が必要かもしれないのでsudo make installで試してみてください。
次にCコンパイラをビルドしますが、ビルドに先ほどインストールしたbinutilsが必要になるのでパスを通す必要があります。
vi ~/.profile export PATH="/opt/local/bin:/opt/local/sbin:/Users/maaoki/Downloads/RX-Toolchainv15.02/prefix/bin:$PATH"
パスを通したら一度ターミナルを開き直してパスが通っているか確認します。
4.GCCをインストールしますが、そのままでは、source/gcc-4.8.4/gcc/doc/gcc.texiの内容がMac portsのGCCと差分があり、gcc.texiでエラーになって先に進めません。ビルドする前にgcc.texiを以下のように修正します。変更点は、1行に記述するのではなく、改行します。
gcc.texiの修正が終わったらGCCのビルドをします。
cd ../../build mkdir gcc cd gcc /Users/maaoki/Downloads/RX-Toolchainv15.02/source/gcc-4.8.4/configure --target=rx-elf --prefix=/Users/maaoki/Downloads/RX-Toolchainv15.02/prefix --enable-languages=c,c++ --disable-share --with-newlib --enable-lto --disable-libstdcxx-pch CC=gcc --disable-multilib --disable-nls --disable-libmudflap --with-system-zlib --with-mpfr=/opt/local --with-mpc=/opt/local --with-texinfo=/opt/local --disable-libssp --disable-libgomp make all-gcc sudo make install-gcc
致命的なエラーが出なければ、あとで、もう一度ビルドするのでここでは問題ないです。
5.Newlibのインストールをします。ここでも一箇所エラーで進まないところがあったので、修正しています。
source/newlib-2.2.0/newlib/libc/machine/rx/memcpy.sにある#errorコンパイル指示のところでエラーとなったので、コメントアウトしてエラーを回避しています。
コメントアウトしたので、memcpyの関数ライブラリは使わない方が良いと思います。
newlibは組み込みシステムで使用する標準Cライブラリです。必要なけば、newlibをビルドしなくても良いのですが、三角関数などを使いたいので、ここはどうしても回避してでもビルドしています。
cd ../../build mdkir newlb cd newlib /Users/maaoki/Downloads/RX-Toolchainv15.02/source/newlib-2.2.0/configure --target=rx-elf --prefix=/Users/maaoki/Downloads/RX-Toolchainv15.02/prefix CC=gcc make make install
6.最後にもう一度GCCのビルドをします。
cd ../../build cd gcc make sudo make install
これでクロスンパイラの環境構築が終了になります。次回は、CS+と同じ環境で使えるようにスタートアップなどのソースを作ります。