FPGA開発日記

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

GCC 10.1がリリースされたのでビルドしてみる

GCC 10.1がリリースされた。GCCのバージョン自体はあまり真剣に追いかけていないので詳細にチェックしていないのだが、まずは自分の環境にインストールして動作を確認しておきたい。

  • x86向けにビルドを試す

いつも通りtar.gzをダウンロードしてインストールした。

curl -L http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-10.1.0/gcc-10.1.0.tar.gz | tar xz
cd gcc-10.1.0
./contrib/download_prerequisites
mkdir build
cd build
../configure --prefix=/home/msyksphinz/compiler/gcc-10.1.0
make -j$(nproc)
make install

これで問題なくビルドが完了した。/home/msyksphinz/compiler/gcc-10.1.0に生成されたバイナリを実行して確認しておく。

/home/msyksphinz/compiler/gcc-10.1.0/bin/gcc --version
gcc (GCC) 10.1.0
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

問題無いようだ。

  • RISC-V向けのビルドを試す

RISC-V向けにビルドできるだろうか?一応確認しておこう。

cd gcc-10.1.0
./contrib/download_prerequisites
mkdir build-riscv64
cd build-riscv64
../configure --target=riscv64-unknown-elf --prefix=/home/msyksphinz/compiler/riscv64-gcc-10.1.0 --enable-multilib --enable-languages=c --without-headers
make -j$(nproc)
make install

しばらく待っていたが、以下で落ちてしまった。

libtool: compile:  /home/msyksphinz/work/compiler/gcc-10.1.0/build-riscv64/./gcc/xgcc -B/home/msyksphinz/work/compiler/gcc-10.1.0/build-riscv64/./gcc/ -B/home/msyksphinz/compiler/riscv64-gcc-10.1.0/riscv6
4-unknown-elf/bin/ -B/home/msyksphinz/compiler/riscv64-gcc-10.1.0/riscv64-unknown-elf/lib/ -isystem /home/msyksphinz/compiler/riscv64-gcc-10.1.0/riscv64-unknown-elf/include -isystem /home/msyksphinz/compi
ler/riscv64-gcc-10.1.0/riscv64-unknown-elf/sys-include -DHAVE_CONFIG_H -I. -I../../../libssp -Wall -g -O2 -MT ssp.lo -MD -MP -MF .deps/ssp.Tpo -c ../../../libssp/ssp.c -o ssp.o
../../../libssp/memcpy-chk.c:45:15: error: unknown type name 'size_t'
   45 |               size_t len, size_t slen)
      |               ^~~~~~
../../../libssp/memcpy-chk.c:37:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?
   36 | #include <ssp/ssp.h>
  +++ |+#include <stddef.h>
   37 | #ifdef HAVE_STRING_H
../../../libssp/memcpy-chk.c:45:27: error: unknown type name 'size_t'
   45 |               size_t len, size_t slen)
      |                           ^~~~~~
../../../libssp/memcpy-chk.c:45:27: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?
../../../libssp/gets-chk.c:62:22: error: unknown type name 'size_t'
   62 | __gets_chk (char *s, size_t slen)
      |                      ^~~~~~
../../../libssp/gets-chk.c:38:1: note: 'size_t' is defined in header '<stddef.h>'; did you forget to '#include <stddef.h>'?
   37 | #include <stdarg.h>
  +++ |+#include <stddef.h>
   38 | #ifdef HAVE_STDLIB_H
../../../libssp/ssp.c: In function '__guard_setup':
../../../libssp/ssp.c:93:12: warning: implicit declaration of function 'open' [-Wimplicit-function-declaration]
   93 |   int fd = open ("/dev/urandom", O_RDONLY);
      |            ^~~~
../../../libssp/ssp.c:93:34: error: 'O_RDONLY' undeclared (first use in this function)
   93 |   int fd = open ("/dev/urandom", O_RDONLY);
      |                                  ^~~~~~~~
../../../libssp/ssp.c:93:34: note: each undeclared identifier is reported only once for each function it appears in

うーん何かやり方が違うのかしら。Binutils-2.34をいったんビルドしてから再試行したが変化なし。 GCCのリリースノートにもRISC-Vの言及があるので動くと思うのだが...

gcc.gnu.org

もう少し試してみよう。