FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

"libmpfr.so.4: cannot open shared object file" エラーメッセージの対処方法

完全な作業メモ。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

以下の記事を参考にして修正する。

qiita.com

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

これで修正できる。