2011/11/01

pgplot on mac (legacy version)

pgplot on mac

gcc, gfortran が使えることが前提

# -> sudo

pgplot を落とす。

#mkdir /usr/local/pgplot
#mkdir /usr/local/src

で、落としたpgplot を /usr/local/src で解凍
そのあと、mac用makefileを作るために、
誰かが作った設定ファイル群を /usr/local/src/pgplot/ 内で解凍

sys_macosx ディレクトリができていればOK

# cp -p /usr/local/src/pgplot/drivers.list /usr/local/pgplot/
コピーしたdrivers.list をルート権限で開いて、インストールしたいドライバを
コメントアウト解除
(オレは /gif, /vgif, /ps, /vps, /cps, /vcps, /latex, /xserv, /xdisp, /xwindow)

$ cd /usr/local/pgplot

・makefile作成
# /usr/local/src/pgplot/makemake /usr/local/src/pgplot macosx gfortran_gcc

・makefile 編集
FCOMPL=gfortran
-> FCOMPL=gfortran -m64

これをやらないと ranlib 実行時に
cputype (7) does not match previous archive members cputype (16777223) (all members must match)
と言われてしまう。
この原因は64bit にするかしないかの問題っぽい。

・proccom.c 編集
/usr/loca/src/pgplot/pgdispd/proccom.c
Intrinsic.h やら malloc() やらをどうにかする。
ググって調べるべし。 
多分、Instrinsic.hだけコメントアウトでいけるはず。

・コンパイル
# make
# make cpg
# make clean

・PATHを通す
例: .bashrc 内
export PGPLOT_DIR="/usr/local/pgplot"
export PGPLOT_DEV="/xserv"
export PGPLOT_TYPE="xserv"

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

ここで pgdemo が動く、はず。

コンパイルはモジュール含めて全部64bitで。

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

 -lX11 を入れるとパスが通っていないのでエラーを吐く。
mac ports を入れていると、libX11.a のパスは /opt/local/lib にあるので、上に加えて
-L/opt/local/lib -lX11
と書けば問題ない。

.bashrc なんかに環境変数  export LD_LIBRARY_PATH=/opt/local/lib
と書くかしないといかん、と思った。

だが、少なくとも mac osx lion では $LD_LIBRARY_PATH が適用されない。
$ source ~/.bashrc
としても、適用されない。
従って、ここでpgplot のパスを指定して
gfortran -m64 -O3 -o aaaa aaaa.o -lcpgplot -lpgplot -lgcc -lm
としても読んでくれない。
標準ライブラリのパスの指定方法が知りたい。

なんでこんな微妙なところがUnixと違ってるんだか。
結局 cygwin で研究環境を構築するのと同じ位労力が必要だったよチキショー。
システムのパスくらいグローバルスタンダードにしろってんだ。

-----追記 2011.11.09
他のモジュールを使うときに ar コマンドを使ってひとまとめにして aa*.a などを
組み込もうとすると、64bit に対応していないとかいうエラーを吐く。
gcc -c -m64 でモジュールをコンパイルすればいいと思ったが、どうもダメらしい。
ar を使わずに、 gcc -c のみを使って、 aa*.o を組み込めば解決。
そもそもpgplot使っててモジュール化している時点でコンパイルにスクリプトを使うことがほぼ確定しているのに、わざわざアーカイブする理由もあるまい。
愚直にコンパイルするよろしっつーことで。

 -L/opt/local/lib を指定しても別にlinux 環境で問題が出る訳でもない。
そういうわけで、コンパイラーのパスとアーカイバを使わないだけでだいたい解決した。


----追記 2013.07.26
最終的には非常にシンプルな方法でインストールできるようになった。
http://xchop.blogspot.jp/2013/07/just-3-steps-to-install-pgplot-on-mac.html

0 件のコメント: