GLSC をインストールしてみる

桂田 祐史


Date: 2021年11月8日, 2021年11月8日


現象数理学科創設以来、比較的最近まで、“現象数理学科 Mac” には、 GLSC というグラフィックス・ライブラリィがインストールされていました。 最近の新入生の Mac にはインストールされていないようです。

(「GLSCの紹介」)

GLSC がインストールされていることを前提としたサンプル・プログラムがあるので、 それを動かすために、GLSC をインストールするにはどうすれば良いか説明します。

(GLSC はコンパクトで、ライブラリィとヘッダーファイル合わせて 1MB 程度ですので、 ストレージの消費は無視できるレベルです。)


GLSC を動かすには、X (X11 Window System) というものが必要になります。 Mac の場合、 XQuartz というソフトで X を使うのが普通で、 学部生の現象数理学科 Mac にはインストールされているはずです。 しかし古くてなってバージョン・アップが必要になっている可能性もあります。
インストールされているかチェック (ターミナルで次のコマンドを実行する。)
xeyes &

xeyes はマウス・カーソルを見つめる目玉がディスプレイに表示するプログラムです。

GLSC は C 言語で記述されています。 ネットからソース・プログラムを入手してライブラリィをコンパイルするのが、 普通のインストール手順です。

GLSC を入手して、コンパイル、テスト、インストール (ターミナルで作業する)
必要なファイルを入手して、パッチを当てる (ソース・プログラムを修正する)。
rm -rf glsc-sagyou
mkdir glsc-sagyou
cd glsc-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

gfortran を使う必要があるならば、 ここで、 Makefile の FC をgfortran にセットする。

それから make でコンパイルする。

make >& make.log

続いてテストするには

cd test
./ctests
./ctestd
cd ..
(順に、C言語単精度、C言語倍精度)

うまく動いたらインストールする。次は sudo を使うので、 一つずつ実行することを勧める。

sudo mkdir -p /usr/local/bin /usr/local/lib /usr/local/include
sudo make install >& make-install.log

これが済んだら glsc-sagyou は削除しても良い。

/usr/local/lib, /usr/local/include にライブラリィ・ファイルやインクルード・ファイルがコピーされる。

プログラムをコンパイル&リンクするとき、それらの場所を指定する必要がある。 それはやや面倒なので、現象数理学科 Mac では、 cglsc という名前のシェル・スクリプトを用いることにしていた。

cglsc の入手し、実行許可属性をつけて、インストール
curl -O http://nalab.mind.meiji.ac.jp/~mk/misc/20210429/cglsc
chmod +x cglsc
cp cglsc ~/bin
あるいは /usr/local/bin にインストールする。
sudo cp cglsc /usr/local/bin
この cglsc は20行程度のテキスト・ファイルであるので、 何をしているか簡単に見ることが出来る。

試しにプログラムを一つコンパイル&実行してみよう。 以下は 1次元熱方程式の初期値境界値問題を差分法で解くプログラムを コンパイルして実行する例。
cglsc のテスト -- 実行例
以下の % はシェルのプロンプトで、入力する必要はない。
% curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat1d-e-glsc.c
% cglsc heat1d-e-glsc.c
% ./heat1d-e-glsc
区間の分割数 N = 50
λ (=τ/h^2) = 0.5
τ=0.0002
最終時刻 Tmax = 0.5
終りました。X の場合はウィンドウをクリックして下さい。
%





桂田 祐史