はじめに
ubuntu 16.04 & matlab R2017bにおいて,
MEXファイルを作る際に少し手間取ったのでメモ
問題
mex hogehoge.cpp
を実行した際に,「gcc version '5.4.0'を使用しています。gcc のこのバージョンはサポートされていません」という警告が出る.
また,作成されたMEXファイルを実行した際に,
「'path/hogehoge.mexa64' で必要とされるシンボル'xxxxxxxxx' がありません。」
というエラーが発生し,実行されない.
原因
システムにインストールされているコンパイラ(gcc, g++)のバージョンに
matlabが対応していなかった.
解決策
matlabが対応しているコンパイラ (本稿執筆時はgcc-4.9, g++-4.9) をインストールし,
それらを指定してmexを実行する.
手順
-
gcc, g++のインストール
$ sudo apt-get install gcc-4.9 g++-4.9
-
インストールした g++ (Cの場合はgcc) のパスを指定してmexを実行
mex -v GCC=/usr/bin/g++-4.9 hogehoge.cpp