7.1 インストール

2012年10月、Mac Book Air にインストールしたときの記録。

  1. 前準備として GMP, MPFR をインストールする。 MacPorts に任せれば良いので簡単である(はず)。
    sudo port install gmp
    sudo port install mpfr
    
    最初、付属文書の指示に従い、 ヘッダーファイルやライブラリィファイルを /usr/local/include に 入れようと思ったが、 古い gmp.hmpfr.h があった。 言うことに従わないことにする。
  2. Multiple Precision Toolbox for MATLAB から mptoolbox_1.1.zip を入手し、 中身をコピーする.
    ファイルを解いて、コピー
    mkdir mptoolbox_1.1
    cd mptoolbox_1.1
    unzip ../mptoolbox_1.1.zip
    sudo tar cf - . | (cd /Applications/MATLAB_R2010b.app/; tar xpf -)
    
    (丸ごと /Applications/MATLAB_R2010b.app/ にコピーするというのは、 付属文書の指示なのだけど、かなり乱暴である。 既存のファイルを上書きしないことを確認してからコピーしたが、 後から考えてみると、 動作に必要なのは mp@ 以下のファイルだけみたいなので、 mp@ だけをコピーするものかもしれない。)
  3. Mex のセットアップをする。まずは
    mex のセットアップを始める
    >> mex -setup
    
        Options files control which compiler to use, the compiler and link command
        options, and the runtime libraries to link against.
    
        Using the 'mex -setup' command selects an options file that is
        placed in ~/.matlab/R2010b and used by default for 'mex'. An options 
        file in the current working directory or specified on the command line 
        overrides the default options file in ~/.matlab/R2010b.
     
        To override the default options file, use the 'mex -f' command
        (see 'mex -help' for more information).
    
    The options files available for mex are:
    
      1: /Applications/MATLAB_R2010b.app/bin/gccopts.sh : 
          Template Options file for building gcc MEX-files
     
      2: /Applications/MATLAB_R2010b.app/bin/mexopts.sh : 
          Template Options file for building MEX-files via the system ANSI
    	compiler
     
      0: Exit with no changes
    
    Enter the number of the compiler (0-2):
    1
    
    /Applications/MATLAB_R2010b.app/bin/gccopts.sh is being copied to 
    /Users/mk/.matlab/R2010b/mexopts.sh
    
    **************************************************************************
      Warning: The MATLAB C and Fortran API has changed to support MATLAB 
               variables with more than 2^32-1 elements.  In the near future 
               you will be required to update your code to utilize the new 
               API. You can find more information about this at: 
               http://www.mathworks.com/support/solutions/en/data/1-5C27B9/?solution=1-5C27B9 
               Building with the -largeArrayDims option enables the new API. 
    **************************************************************************
    >>
    
    メッセージに書いてあるように、 ~/.matlab/R2010b/mexopts.sh というファイルが用意される。 これを修正する。 Archmaci64 のところをチェックする。 以下、C の場合のみ考える (C++, Fortran については後日)。
    Cコンパイラーを指定している部分
                CC='gcc-4.0'
                SDKROOT='/Developer/SDKs/MacOSX10.5.sdk'
                MACOSX_DEPLOYMENT_TARGET='10.5'
    
    ところで使っているシステムにはどんなのが入っているのか?
    gcc --version
    which gcc
    ls -l /usr/bin/gcc*
    
    これで 4.2.1 というバージョンで、 コマンド名が gcc-4.2 であることを知る。
    ls /Developer/SDKs/
    
    これで /Developer/SDKs/MacOSX10.6.sdk というのがあることを知る.
    こんなふうに修正
                CC='gcc-4.2'
                SDKROOT='/Developer/SDKs/MacOSX10.6.sdk'
                MACOSX_DEPLOYMENT_TARGET='10.6'
    
    GMP, MPFR を見つけ出せるように、 CFLAGS-I/opt/local/include を加えておく。 具体的には次のような行を追加する。
                CFLAGS="$CFLAGS  -I/opt/local/include"
    
    ライブラリィもやるべきなのかな?
    	CLIBS="-L/opt/local/lib $MLIBS"
    
    とか。

    こんなふうにしたはず。
    [chronos:~/.matlab/R2010b] mk% diff mexopts.sh.org mexopts.sh
    239,241c239,241
    <             CC='gcc-4.0'
    <             SDKROOT='/Developer/SDKs/MacOSX10.5.sdk'
    <             MACOSX_DEPLOYMENT_TARGET='10.5'
    ---
    >             CC='gcc-4.2'
    >             SDKROOT='/Developer/SDKs/MacOSX10.6.sdk'
    >             MACOSX_DEPLOYMENT_TARGET='10.6'
    244a245,246
    > # The next line was added by mk.
    >             CFLAGS="$CFLAGS  -I/opt/local/include"
    [chronos:~/.matlab/R2010b] mk%
    

  4. コンパイルする。
    >> cd /Applications/MATLAB_R2010b.app/@mp/private/
    >> mp_compile_all
    
    コンパイルすると山のように警告が出るが、全部同じ内容である。 int であるべきところに mp_exp_t がある、 後者は実は前者を typedef したものなので何の問題も生じない。 ポリシーからすると黙らせたいのだけど (警告を無視していると、 大事なことを見落とす可能性があるので、 警告には出来る限りていねいに対応することにしている)、 どうやれば良いか分からない。
  5. 後はチェック。
    >> cd ../..
    >> mp_TESTING
    >> mp_TESTING2
    
    Hilbert行列のところの精度が precision をあげても良くならない。 なぜだろう。
  6. 日常的に利用するには、 MATLABに /Applications/MATLAB_R2010b.app/@mp というディレクトリィを登録しておくのだろう。 File → Set Path かな?

桂田 祐史
2017-09-13