MEXファイルのコンパイルに関して

目的

SpicyMKLを実行するにはHessAugMexbias.cnormKj.cの2つのファイルをコンパイルする必要があります.

MATLABが正しく設定されていれば,同じフォルダ内のsetup.mを実行するだけです.このファイルには以下の2行が書かれています:

mex -lmwblas normKj.c
mex -lmwblas HessAugMexbias.c

さらに詳しい情報はこちらをご覧下さい

BLAS ライブラリが見つからないと言われたら

Windows では例えば以下のように blas ライブラリへのパスを通す必要があるようです:

mex -L"C:/Program Files/MATLAB/R2008b/extern/lib/win32/lcc" -lmwblas normKj.c
ただし,MATLAB のインストールフォルダやmexコマンドが使用するコンパイラにあわせて修正する必要があります.mex コマンドが使用するコンパイラを選択するには mex -setup を実行して下さい.

ヘッダーファイルが見つからないと言われたら / mex コマンドのオプションが間違っていると言われたら

少し古いバージョンの MATLAB は blas ライブラリが含まれていないので,以下のようにします.

Windows の場合

  1. BLAS_nowrap.libをダウンロードしてdemo/SpicyMKLにおいて下さい.
  2. mexfilesR13.zip をダウンロードして,demo/SpicyMKLnormKj.cHessAugMexbias.cを上書きしてして下さい.
  3. MATLABを起動し,demo/SpicyMKLに移動して,以下のコマンドでコンパイルして下さい.
    mex normKj.c BLAS_nowrap.lib
    mex HessAugMexbias.c BLAS_nowrap.lib
    

UNIX / LINUX の場合

mexfilesR13.zipをダウンロードし,Windows の場合と同様に .c ファイルを上書きして下さい.さらに,
BLAS ライブラリがある場合
以下のコマンドでコンパイルして下さい.
mex -lblas normKj.c
mex -lblas HessAugMexbias.c
BLAS ライブラリがない場合
一番簡単なのはclapack.tgzをダウンロードし,README.installに従ってmakeすることです(LAPACKは不要です).これで作られたblas_LINUX.aファイルをdemo/SpicyMKLにコピーし,以下のコマンドでコンパイルして下さい.
mex normKj.c blas_LINUX.a
mex HessAugMexbias.c blas_LINUX.a

その他

デスクトップなど,日本語やスペースが作業フォルダ名に含まれるとうまくコンパイルできない場合もあるようです.