OS X 10.9 (Mavericks)とMatlab R2014aでgfortranを使う

注意内容が古くなったので新しい記事を書きました(2016年3月8日)。

(1)OS X 10.9 (Mavericks)でgfortranを使う

  1. Xcodeをインストール:App Storeの検索窓に"xcode"と入力して、xcodeを探して、インストールする
  2. command-line toolsをインストール:ターミナル(terminal)を起動し、xcode-select --installと入力する。仕様が変わりました。下記参照:http://qiita.com/3yatsu/items/47470091277d46f3fde2
  3. gccをダウンロード:"High Performance Computing for Mac OS X" http://hpc.sourceforge.net/ からgcc-4.9-bin.tar.gzをダウンロード*1
  4. gccを解凍:ターミナルでsudo tar -zxvf gcc-4.9-bin.tar.gz -C / と入力*2

[Ref] http://hpc.sourceforge.net/

(2)Matlab R2014aでgfortranを使う
次にOS X 10.9 (Mavericks)上のMatlab r2014aでgfortranを使うには/usr/local/binへのパスを設定する必要があるため、start.mなどに以下のように書いておく。

setenv('PATH', [getenv('PATH') ':/usr/local/bin']);
[Ref] http://www.mathworks.co.jp/matlabcentral/answers/116922-mex-cannot-find-gfortran-compiler-mac-os

最後にgfortranが設定されているか確認する。

mex -setup FORTRAN

(3)Matlab R2014aでFortranコードを確認
/Applications/MATLAB_R2014a.app/extern/examples/refbookからサンプルコードをコピーしてmexを確認する。

[コード例1]
mex timestwo.F
コンパイルが無事に終了)
x = 99;
y = timestwo(x)
[Ref] http://www.mathworks.co.jp/jp/help/matlab/matlab_external/passing-a-scalar_btgcf9p-1.html

[コード例2]
mex matsq.F
コンパイルが無事に終了)
x = [1 2 3; 4 5 6];
y = matsq(x)
[Ref] http://www.mathworks.co.jp/jp/help/matlab/matlab_external/passing-matrices.html

[コード例3]
mex sincall.F fill.F
コンパイルが無事に終了)
sincall
[Ref] http://www.mathworks.co.jp/jp/help/matlab/matlab_external/calling-functions-from-fortran-mex-files.html

[コード例4]
mex yprimef.F yprimefg.F
コンパイルが無事に終了)
yprimef(1, 1:4)

*1:Mathworksの公式サイトには「gfortran 4.3.*しかサポートしない」と書いてあるが、簡単なコードはgcc-4.9でも動く模様(今後要確認)

*2:gccやgfortranがインストールされるのは/usr/local配下