【MATLAB】MEXでc, c++コンパイラを指定する方法【ubuntu】


はじめに

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を実行する.

手順

  1. gcc, g++のインストール

    $ sudo apt-get install gcc-4.9 g++-4.9
    
  2. インストールした g++ (Cの場合はgcc) のパスを指定してmexを実行

    mex -v GCC=/usr/bin/g++-4.9 hogehoge.cpp