Matlab R2020a のmexでコンパイルするには、gcc のバージョンが6.3.0とかなり古いものが必要となるが、gcc 6.3.0 はそのままではgcc 10.1.0 ではコンパイルできなかったので(途中でエラーが出る)、コンパイル方法をメモしておく。
$ wget http://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-6.3.0/gcc-6.3.0.tar.gz
$ tar xzf gcc-6.3.0.tar.gz
$ mv gcc-6.3.0 gcc-6.3.0-source
$ cd gcc-6.3.0-source
$ ./contrib/download_prerequisites
$ cd ..
$ mkdir -p build
$ cd build
$ ../gcc-6.3.0-source/configure --prefix=[インストールパス]/gcc-6.3.0 --disable-multilib --disable-libsanitizer
$ make
make が途中で止まったら、
emacs +61 x86_64-pc-linux-gnu/libgcc/md-unwind-support.hn
で
struct ucontext *uc_ = context->cfa;
を
ucontext_t *uc_ = context->cfa;
とする。
これで再度 make をする。
$ make
また停止したら、 `find . | grep java-signal.h`
./include/java-signal.h:31:10: note: forward declaration of ‘struct _Jv_catch_fpe(int, siginfo_t*, void*)::ucontext’
struct ucontext *_uc = (struct ucontext *)_p; \
の部分を
ucontext_t *_uc = (ucontext_t *)_p; \
にする。
これで再度 make をする。
$ make
あとは make install する
$ make install
インストールした後の環境変数の設定方法としては、
export PATH=[インストールパス]/gcc-6.3.0/bin:$PATH
export LD_LIBRARY_PATH=[インストールパス]/gcc-6.3.0/lib64/:$LD_LIBRARY_PATH
とする。