(画像はriscv.org, freebsd.orgより拝借)
FreeBSD 11.0-RELEASE Announcement
FreeBSD 11.0がリリースされた。アーキテクチャのサポートとして、ARM64およびRISC-Vのサポートが追加されたらしい。
FreeBSDは、昔から積極的にRISC-Vをサポートしている。今年頭のRISC-V Workshopでも既にFreeBSDの話題が上がっていた。また、11.0でなくても、10.x台でもFreeBSDをRISC-Vで動作させることが出来るようだ。
https://riscv.org/wp-content/uploads/2016/01/Tues1445-freebsd-riscv-1.pdf
筆者も、以前少し試行していた。
以下はその際にいくつか試行した記録。
FreeBSDのビルドまではうまく行くのだが、FreebSDをブートさせるためのBBL?のビルドが上手く行かない。
../configure --prefix=$PREFIX --host=riscv64-unknown-freebsd11.0 --with-payload=path_to_freebsd_kernel
うーん、ビルドツールとしてriscv64-unknown-freebsd11.0-gcc
はインストールされているのだが、どうやら実行ファイルを作ることが出来ないのが原因のようだ。
確かに、単純にmain()
だけが入っているファイルをクロスコンパイルしようとしてもエラーが発生してしまう。crt1などが生成できていないようだ。これは何故だろう?
vagrant@:~/work % cat main cat: main: No such file or directory vagrant@:~/work % cat main.c int main () { ; return 0; } vagrant@:~/work % riscv64-unknown-freebsd11.0-gcc main.c /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find crt1.o: No such file or directory /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find crti.o: No such file or directory /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find crtbegin.o: No such file or directory /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find -lgcc /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find -lc /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find -lgcc /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find crtend.o: No such file or directory /home/vagrant/riscv/lib/gcc/riscv64-unknown-freebsd11.0/6.1.0/../../../../riscv64-unknown-freebsd11.0/bin/ld: cannot find crtn.o: No such file or directory collect2: error: ld returned 1 exit status
そもそも、riscv-toolchainをビルドする際にmakeターゲットとしてfreebsd
を設定しているのも良く分からない。
make freebsd
これを単純にmake
のみとすると、エラーが発生してしまった。
... checking whether compiler driver understands Ada... no checking how to compare bootstrapped objects... cmp $$f1 $$f2 16 16 checking for objdir... .libs checking for the correct version of gmp.h... no configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
うーんお、GMP等はインストールしているんだけどなあ。しかもバージョンは5.1.3と十分に最新だ。。。
もうちょっと調査してみる必要がありそうだ。