binutilsインストール
Raspberry Pi 3B+のベアメタル環境構築のために、binutilsをインストールした。 いろいろとハマったのではまったことなどをまとめておく。
最終的に、ワーニングがいくつか出たが何とかコンパイルできてインストールが完了した、という次第。
環境はubuntu 18.04.3 LTS (Bionic Beaver)
基本的に以下のページを参考にさせていただいた。
piでベアメタルプログラミング - bobuhiro11's diary
注意:以下に述べるポイントはbinutilsのインストールを100%保証するものではない。あくまで私の環境で試したことをまとめているだけである。
最終的な実行手順
最終的に次の流れでインストールができた。
※2020/02/22 configureのtarget指定をarm-non-eabiからaarch64-elfに修正
64bitで動かしたかったがarm-non-eabiではコンパイルできなかったため。
$su - $ apt install texinfo $ apt install bison $ apt install flex $ apt install gap-core $ apt install gap-grape $ apt install g++ $ export LDFLAGS="-L/opt/local/lib" $ export CFLAGS="-I/usr/local/include -O2" $ cd /usr/local $ mkdir cross-pi $ cd /usr/local/src $ git clone git://sourceware.org/git/binutils-gdb.git $ cd binutils-gdb $ mkdir work $ cd work $ ./configure --target=aarch64-elf --prefix=/usr/local/cross-pi $ make $ make install
以降、はまったポイントを述べる。
はまりポイント1 - 古いソースコード
まずソースコードをダウンロードする。参考サイトではwget
でソースコードのアーカイブをダウンロードしている。
参考サイトが2014年の記事だったため、ソースコードの意図する環境が変わって(新しくなって)いると考えた。なので、gitで公開されていた最新版をダウンロードするようにした。
Binutils - GNU Project - Free Software Foundation
$git clone git://sourceware.org/git/binutils-gdb.git
はまりポイント2 - 不足ツール
makeを実行すると、ツールが足りないとエラーをはいてくる。さすがにすべてコンパイルしてインストールするわけにもいかないので、不足ツールはapt
で追加インストールを行った。
すべてメモっていたわけではないので抜け、重複しているものがあるかもしれない。
$apt install texinfo $apt install bison $apt install flex $apt install gap-core $apt install gap-grape $apt install g++
texinfo
はtextinfo
ではないことに注意すること。
はまりポイント3 - ワークディレクトリ
これが最大のはまりポイント。
make
実行時に次のエラーメッセージに非常に悩まされた。
configure: error: source directory already configured; run "make distclean" there first
これがでるともうmake distclean
し、configure
からやり直すしかない。
詳しい原因は不明だが、ワークディレクトリを作りワークディレクトリでconfigure、makeを行うと解消された。
$cd binutils-gdb $mkdir work $cd work $./configure $make $make install
この後続けてgcc、newlibのインストールも行ったがbinutilsのインストールでベースができていたので問題なく終わった。コンパイルに1時間以上かかったが。