2020年9月25日金曜日

Matlab の mex のための gcc 6.3.0 のコンパイル方法

 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

とする。

0 件のコメント:

コメントを投稿