こんにちは、しゅうです。
前回はソースやパッケージなどの準備をしていきました。今回は、それらをビルドしていきます。
復習
前回作成したディレクトリの確認をします。以下のようにダウンロードしたものを展開してsourceフォルダに入れておいて、prefixとbuildのフォルダがあれば問題ないです。
RX-ToolChain (この名前と場所は任意で問題ありません) +source | +gcc (ダウンロードしたもの) | +newlib (ダウンロードしたもの) | +binutils (ダウンロードしたもの) +prefix +build
また、今回の記事内の各コマンドで[Path_To_RX]とかかれているところは、上記のsourceなどが入っているディレクトリまでのパスに置き換えましょう。
ビルド!
binutils
初めにbinutilsのビルドをします。buildディレクトリに移動してbinutilsフォルダを作りましょう。
$ cd /[Path_To_RX]/RX-ToolChain/build $ mkdir binutils
makeなどを実行する前に、各種ファイルに権限を付与していきます。
$ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/binutils/configure $ sudo chmod 777 /[Path_To_RX]/RX-ToolChain/source/binutils/missing $ sudo chmod 777 /[Path_To_RX]/RX-ToolChain/source/binutils/bfd $ sudo chmod 777 /[Path_To_RX]/RX-ToolChain/source/binutils/bfd/po $ sudo chmod 777 binutils
この他にも、Permission deniedなどのエラーが出るかもしれないので、その時は同じように権限を付与して再度実行してください。次にbuild/binutilsに移動してmakeのconfigをします。
$ cd binutils $ /[Path_To_RX]/RX-ToolChain/source/binutils/configure --target=rx-elf --prefix=/[Path_To_RX]/RX-ToolChain/prefix --enable-maintainer-mode --disable-werror $ sudo chmod 777 /[Path_To_RX]/RX-ToolChain/source/binutils/install-sh $ sudo chmod 777 /[Path_To_RX]/RX-ToolChain/source/binutils/mkinstalldirs
そのままmakeをしましょう。
$ make $ make install
完了したら、.bashrcや.zshrcなどに、今作ったbinへのPathを通しましょう。
$ vim ~/.zshrc
export PATH="$PATH:/[Path_To_RX]/RX-ToolChain/prefix/bin"
gcc
binutilsが無事インストールできたら、次はgccのビルドに進みます。先ほど書き加えた$PATHがちゃんと出ることを確認したらbuildディレクトリに移動しましょう。
$ cd /[Path_To_RX]/RX-ToolChain/build $ mkdir gcc $ cd gcc $ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/gcc/configure
そして次のコマンドでconfigしましょう。たくさんオプションつけまくっています!–with-gmp=/usr/localとしているところ、includeディレクトリなどのヘッダーファイルが直接入っているところを指定しなくても大丈夫らしいです。僕は最初gmp.hがあるところを指定していたのにconfig側から「ないよ!」って言われて三日三晩悩んでいました・・・mpfrとmpcも同様につけておきましょう。
$ /[Path_To_RX]/RX-ToolChain/source/gcc/configure --target=rx-elf --prefix=/[Path_To_RX]/RX-ToolChain/prefix --enable-languages=c,c++ --disable-shared --with-newlib --enable-lto --disable-libstdcxx-pch CC=gcc --disable-multilib --disable-nls --disable-libmudflap --with-system-zlib --disable-libssp --disable-libgomp --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local
無事終えたら
$ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/gcc/libiconv/build-aux/install-sh $ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/gcc/move-if-change $ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/gcc/install-sh $ make all-gcc $ make install-gcc
newlib
gccが無事インストールされたらnewlibのビルドを行います。ディレクトリと権限を付与して行って
$ cd /[Path_To_RX]/RX-ToolChain/build $ mkdir newlib $ cd newlib $ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/newlib/configure
configureとmakeをしていきます。
$ /[Path_To_RX]/RX-ToolChain/source/newlib/configure --target=rx-elf --prefix=/[Path_To_RX]/RX-ToolChain/prefix CC=gcc $ sudo chmod +x /[Path_To_RX]/RX-ToolChain/source/install-sh $ make $ sudo make install
gcc全体
最後に、gccを全てmakeしていきましょう
$ cd /[Path_To_RX]/RX-ToolChain/build/gcc $ chmod +x /[Path_To_RX]/RX-ToolChain/source/gcc/libgcc/mkheader.sh $ make $ sudo make install
まとめ
今回はダウンロードしたもののビルドを行いました。これであとはPi:Coのためのソースコードなどと、書き込み時に必要なものを用意すれば無事書き込みができます!ただその前に、今回はUSB通信では書き込みは行わず、UART通信を用いるのでPi:CoをUARTに対応させないといけません。
なので、次回のブログはUARTのための半田づけやシリアル通信モジュールの準備を行っていきます。