完全な作業メモ。WSL上でChipyard向けのGNUツールのビルドを行っていると時々こういうエラーに遭遇する。
$ ./scripts/build-toolchains.sh --ignore-qemu ec2fast
==> Removing existing riscv-pk/build directory ==> Configuring riscv-pk checking build system type... x86_64-pc-linux-gnu checking host system type... riscv64-unknown-elf checking for riscv64-unknown-elf-gcc... riscv64-unknown-elf-gcc checking whether the C compiler works... no configure: error: in `/home/msyksphinz/work2/riscv/chipyard/toolchains/riscv-tools/riscv-pk/build': configure: error: C compiler cannot create executables See `config.log' for more details zsh: exit 77 ./scripts/build-toolchains.sh --ignore-qemu ec2fast
このときに chipyard/toolchains/riscv-tools/riscv-pk/build/config.log
を確認する。以下のようになっていた時は環境の問題と考えてよい。
riscv64-unknown-elf-gcc: error: unrecognized command line option '-V' riscv64-unknown-elf-gcc: fatal error: no input files compilation terminated. configure:2377: $? = 1 configure:2366: riscv64-unknown-elf-gcc -qversion >&5 riscv64-unknown-elf-gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? riscv64-unknown-elf-gcc: fatal error: no input files compilation terminated. configure:2377: $? = 1 configure:2397: checking whether the C compiler works configure:2419: riscv64-unknown-elf-gcc conftest.c >&5 /home/msyksphinz/work2/riscv/chipyard/riscv-tools-install/bin/../libexec/gcc/riscv64-unknown-elf/9.2.0/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory
以下の記事を参考にして修正する。
ldd /home/msyksphinz/work2/riscv/chipyard/riscv-tools-install/bin/../libexec/gcc/riscv64-unknown-elf/9.2.0/cc1
linux-vdso.so.1 (0x00007ffc7c782000) libmpc.so.3 => /lib/x86_64-linux-gnu/libmpc.so.3 (0x00007f2aaa235000) libmpfr.so.4 => not found libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f2aaa1b1000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2aaa1ab000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2aaa18f000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2aaa03e000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2aa9e4c000) /lib64/ld-linux-x86-64.so.2 (0x00007f2aaa45a000) libmpfr.so.6 => /lib/x86_64-linux-gnu/libmpfr.so.6 (0x00007f2aa9dcb000)
$ cd /lib/x86_64-linux-gnu $ sudo ln -s libmpfr.so.6 libmpfr.so.4
これで修正できる。