蛙の井戸見聞記 Pretty frog in a well who knows nothing of the great web ocean!

~~ 好奇心は猫をも殺す Curiosity Kills the Cat ~~ ♪欲しいモノ・食べたいモノ・ネットで集めた情報と日々の記録の倉庫♪ Logging my life... Since 2003.12  

最近のマックにPGPLOTを入れる。

過去の遺物、、とされているPGPLOT、、、SCISOFTからも削除されちゃったし(><)と思っていたのだけど、以外にもLIONにインストールできてしましました。

忘れないうちにメモ。

まず、PGPLOTのホームページ

PGPLOTをコンパイルするのにはfortranが必要で、gfortranを使うのがよさそうなので、

を参考にgfrotranをインストール。gfortranは、scisoftやそのほかのパッケージもあるので、それを使っても良いと思う。Lapackは必要に応じて。PGPLOTのコンパイル自体には必要なし。

gfortranのダウンロードサイト

ターミナルで移してもいいけど、ファインダーで放り込んでも特に問題ない。

で、PGPLOT。

このホームページがとっても参考になる。

ポイントは、sys_macosというフォルダを作製して、gfortran_gcc.confをその中にコピーすること。このファイルは、大本がどこのものなのか不明なのであるが、aquatermのホームページから

これのAquaTerm1.1.0.dmgをダウンロードすると、似たようなファイルがゲットできる。
つまり、ダウロードしたフォルダの中のadaptersの下にpgplotのフォルダがあり、その中のg77_gcc_AQT.confを多少編集したものがgfrotran_gcc.conf・・と推測できる。diffを貼っとくとこんな感じ。

1c1
< # MacOS X/AQT using g77 and gcc.
    • -
> # MacOS X using gfortran and gcc (NO AQUATERM). 37c37 < FCOMPL="g77"
    • -
> FCOMPL="gfortran" 43c43 < FFLAGC="-O"
    • -
> FFLAGC="" 77c77 < LIBS="-L/usr/X11R6/lib -lX11 -laquaterm -Wl,-framework -Wl,Foundation"
    • -
> LIBS="-L/usr/X11R6/lib -lX11" 106c106 < SHARED_LIB="libpgplot.dylib"
    • -
> SHARED_LIB="libpgplot.dylib" 111c111 < SHARED_LD="gcc -dynamiclib -single_module -o $SHARED_LIB -install_name /usr/local/lib/$SHARED_LIB"
    • -
> SHARED_LD="gcc -dynamiclib -single_module -o $SHARED_LIB -install_name /usr/local/lib/$SHARED_LIB" 120c120 < SHARED_LIB_LIBS="$LIBS -lg2c -lSystem"
    • -
> SHARED_LIB_LIBS="$LIBS -lgfortran -lSystem"

さて、これの使い方。
PGPLOTは、ダウンロードして解凍したフォルダの中ではmakeしない!
どこか適当なところにフォルダを作成する、たとえば、/usr/local/pgplotとか。で、そのdirで、makemakeをする。

# (解凍したフォルダの絶対path)/makemake (解凍したフォルダの絶対path) macosx gfrotran_gcc

makefileのフォートランコンパイラ64bitに、つまり

FCOMPL=gfortran

FCOMPL=gfrotran -m64

とする。

そして、おそらくコンパイルでつっかかるであろうのが、"proccom.c"のファイル。これは、(解凍フォルダ)/pgdispd/proccom.cの位置にある。
宣言がバッティングするので、#includeを適宜コメントアウトする。当家の場合は、2つの#ifdefの内側の#includeをコメントアウトしたらうまくいった。

make
make cpg
make clean

あと、pathを

export PGPLOT_DIR="/usr/local/pgplot" 
export PGPLOT_DEV="/xserv" 
export PGPLOT_TYPE="xserv"

とかしておく。.bashrcの中にでもいれておく。

完成したlibpgplot.dylibを/usr/local/libにコピーしておく。

cp -p /usr/local/pgplot/libpgplot.dylib /usr/local/lib/

これで、

/usr/local/pgplot/pgdemo1

とかするとデモが動作する。

gfortran -o cpgdemo cpgdemo.o -L`pwd` -lcpgplot -lpgplot -L/usr/X11R6/lib -lX11

コンパイル可能なはず。

該当ページによると、

gcc -m64 -c aaaa.c
gfortran -m64 -O3 -o aaaa aaaa.o -L/usr/local/pgplot -lcpgplot -lpgplot -lgcc -lm -L/opt/local/lib -X11

X11が/opt/local/libにmac portsで入っている場合の例)
の方がよさそう?