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の言及があるので動くと思うのだが...
もう少し試してみよう。