FreeBSD-8.1, FreeBSD-9.1 に於ける freefem++-3.21 のコンパイル [0] 準備 ports/math/tetgen をインストールしておきます。これは examples++3d のサンプルプログラムなどで必要 です。 [1] FreeBSD-8.2 1) システムの make(1) を gmake に切替える # cd /usr/bin # mv make BSDmake # ln -s /usr/local/bin/gmake make 2) freefem++-3.21.tar.gz を展開する 3) freefem++-3.21 ディレクトリで下記のパッチをあてる --- download/mshmet/ORGmshmet.2011.03.06.patch 2011-11-17 06:07:40.000000000 +0900 +++ download/mshmet/mshmet.2011.03.06.patch 2013-04-10 17:16:28.000000000 +0900 @@ -39,3 +39,25 @@ +extern int (*lissag)(pMesh ,pSol , int ,int ); #endif +--- mshmet.2011.03.06/sources/lplib3.c 2013-03-23 11:57:29.000000000 +0900 ++++ mshmet.2011.03.06/sourceslib/lplib3.c 2013-03-26 15:01:26.000000000 +0900 +@@ -30,6 +30,10 @@ + #include + #include + #include "lplib3.h" ++#ifdef __FreeBSD__ ++#include ++#include ++#endif + + + /*----------------------------------------------------------*/ +@@ -1250,6 +1254,8 @@ + * NPROC environment variable (BSD/OS, CrayOS) + * sysctl hw.ncpu or kern.smp.cpus + */ ++ int ncpu; ++ + if (pmc_init() == 0 && (ncpu = pmc_ncpu()) != -1) + maxthreads = ncpu; + else --< cut >-- 4) freefem++-3.21 ディレクトリで下記を実行 $ ./configure --enable-download F77=gfortran45 $ make # make install # make clean これで、/usr/local/bin/FreeFem++,FreeFem++-glx,FreeFem++-mpi,FreeFem++-nw, FreeFem++-x11 ができますので、次に、FreeFem++ の loadable module を作ります。 loadable module は FreeFem++ のスクリプトで load "medit" などと呼出を行うと、 medit.so をロードするという仕組みで使われます。 # cd download # make # make install # cp blas/*.a lib # cd ../examples++-load # make # make install # make clean download/blas/libcblas.a,libf77blas.a が download/lib/ に入らないのは、忘れて しまったためだと思います。作成された loadable module は /usr/local/lib/ff++/3.21/lib にコピーされます。また、examples++*/ のサンプルは /usr/local/share/freefem++/3.21/ にコピーされます。マニュアルは http://www.freefem.org/ff++/ から取得してください。 ここで、PARDISO.cpp のコンパイルで、エラーが出ますが、 PARDISO は有償の数値計算 ライブラリで http://www.pardiso-project.org/ から入手できますが、Intel の icc コンパイラにも含まれています。使わない場合は、無視してください。 なお、この方法だと、必要なライブラリのすべてを download/ に用意しますが、既に /usr/local/lib/ に ports/math にある blas、 arpack、admd、umfpack など(注1)の 数値計算ライブラリがインストールされていれば、それらを examples++-load/WHERE_LIBRARY に記述することで、既存のライブラリを使ってコンパ イルすることができます。記述の仕方は examples++-load/WHERE_LIBRARY-download を 見るとわかります。しかし、download/ でまとめてコンパイルするほうが楽だと思いま す。 5) システムの make(1) を元に戻す # cd /usr/bin # mv BSDmake make 注1 ports に存在する FreeFEM++ 関連のライブラリ ports/math/blas ports/math/arpack ports/math/elmer-umfpack ports/math/libglut ports/cad/scotch ports/math/superlu ports/math/metis ports/math/umf ports/math/gmm++ などがそうです。 注2 make/gmake 問題 次のバージョンで、FreeBSD 固有のパッチを組み込むとともに、BSD make と GNU make の非互換性に起因する問題は解消してもられることになりました。(2013-04-12)