(しばらく工事中となりそう。ごちゃごちゃしています。)
「Big Sur でGLSC」 というのを書いた。
macOS の Command Line Tools に含まれる C コンパイラーでは、 暗黙の宣言を認めなくなったので、 オリジナルの GLSC がコンパイル出来なくなっている。
(コンパイラーのオプションに -std=C89 と指定するとコンパイル出来そうだが、そういう後ろ向きなのはやめることにした。)
そこで、突貫工事でプロトタイプ宣言を書きまくってコンパイル出来るようにした。 Intel CPU の Mac ならば、MacPorts で GCC をインストールすることが出来て、 それに含まれる gfortran を使って、 次の手順で GLSC をフルにインストール出来る (sagyou というディレクトリィを作って、 そこに必要なファイルをコピーして、 ソースプログラムをコンパイルして、ライブラリィを生成して、 /usr/local 以下にコピーしている)。
rm -rf sagyou mkdir sagyou cd sagyou curl -O http://www602.math.ryukoku.ac.jp/~nakano/software/math/glsc-3.5.a.tar.Z curl -O http://nalab.mind.meiji.ac.jp/~mk/daishin/glsc-3.5+a.patch curl -O http://nalab.mind.meiji.ac.jp/~mk/program/graphics/glsc-3.5+mk.patch20201229 tar xzf glsc-3.5.a.tar.Z cd glsc-3.5.a patch -p1 < ../glsc-3.5+a.patch patch -p1 < ../glsc-3.5+mk.patch20201229 make>&make.log sudo mkdir -p /usr/local/bin /usr/local/include /usr/local/lib sudo make install |
しかし、M1 チップに対応する GCC はまだ公式リリースされていない (2021/7/11追記 もうとっくの昔にリリースされている。)。
High Performance Computing for Mac OS X というWWWサイトには、 M1 用の gfortran が置いてあったけれど、 一体中身は何だろう (それにしてもこのページは随分久しぶりだ)。
gfortran がない場合でも、 上と同じ手順で(Fortran関係を抜いて)インストールだけは出来る。 ふむ。GLSC の Makefile はよく出来ているね (この辺、本当にすごいと思う)。
今年度の学生も自分も gfortran は使わなさそうなので、あまり急ぐ必要はない。
メモ1 GLSCとは何か 「実は、多くのプログラミング言語で、 グラフィックスの機能は言語仕様に含まれておらず、 グラフィックスを実現するには、 その環境に合った(プログラム)ライブラリィを利用するのが普通です。」
「GLSC (Graphic Library for Scientific Computing) とは、 龍谷大学数理情報学科のグループが作成した、 科学技術計算の結果を可視化するためのライブラリィです。」
「GLSCは、いわゆるフリーソフトウェアで、 オリジナル・バージョンは 1995年にリリースされたものが最終版です。」
「C言語や Fortran で書かれたプログラムから、X Window System の 描画機能 (Xlib) を呼び出すことで、グラフィックスを実現します。」
メモ2 GLSC のマニュアル
メモ3 X11 は、3つのボタンがあるマウスを備えたコンピューター (ワークステーションと呼ばれた) をターゲットとして作られた。 Windows マシンのマウスで 3 ボタンは普通なので、想像するのは難しくないだろう (右クリックは普通にあり、ホイール・クリックが中ボタンのクリックに相当する)。 一方、Mac の純正マウスはボタンがない (ボタンが1つとみなすべき?)。 Mac で X11 を実現する XQuartz は、 XQuartz の[環境設定][入力]にある 「3ボタンマウスをエミュレート」にチェックを入れることで、 次のように動作する。
メモ4 描画したグラフィックスの保存法が少し悩ましい。
void g_dump(char *fname, Display *display, Window wid) { char command[256]; sprintf(command, "import -window %lu %s", wid, fname); system(command); } |
g_capture_set("ディレクトリィの名前"); ... g_capture(); |
G.L.S.C. 3.8.6 のmakeは、Big Sur 以前では
mkdir sagyou2 cd sagyou2 curl -O http://www.isc.meiji.ac.jp/~akiyama_masakazu/Software/glsc-3.8.6.zip curl -O http://nalab.mind.meiji.ac.jp/~mk/program/graphics/glsc-3.8.6-mk-patch unzip glsc-3.8.6.zip cd glsc-3.8.6 patch -p1 < ../glsc-3.8.6-mk-patch mv Makefile Makefile.org cp -p Makefile.mk Makefile |
curl -O http://nalab.mind.meiji.ac.jp/~mk/program/graphics/cglsc386 chmod +x cglsc386 sudo mv cglsc386 /usr/local/bin |
やはり g_out() では、Big Sur で色々引っかかる (なるほど、そこは多分手をつけられていないんだ)。 g_out については、make のターゲットから外すか、 上のパッチを当てたディレクトリィをコピーすると良い。