DCL のインストール
ここでは, DCL のインストールログを書いてあります. ここの環境はあくまで, 自分の計算機環境ですので, これを参考にインストールを考えておられる方は, 適宜, ご自分の計算機環境に置き換えて, インストールを行ってください.
環境
- OS : Ubuntu 9.04 以降
- DCL のバージョン : dcl-6.0.4 (2016 年時点での最新版)
- Fortran コンパイラ : Intel Fortran, GNU Fortran, Fujitsu Fortran
インストール作業事前準備
インストールを行う前に, 以下の作業を行っておく.
- gtk のインストール
DCL では, 図の出力に gtk2 が利用する cairo ライブラリを利用しているため, gtk もインストールしておく. gtk はubuntu ではパッケージ化されているので,
# apt-get install libgtk2.0-dev
を行うと, 関連パッケージが一緒にインストールされる
- DCL のダウンロード
- C コンパイラおよび, Fortran コンパイラの確認
- 環境変数を陽に指定しなければ, configure により自動でコンパイラが決定される.
陽に指定するには, configure を実行する前に,
$ export FC=<Fortran コンパイラ名> $ export CC=<C コンパイラ名>
などとして指定しておく.
f77 版インストール作業
では, 実際にインストール作業を行っていく. ちなみに, 最新版の DCL ではインストール用のパッケージが用意されていないので, make によるインストールを行う.
- DCL をダウンロードしたディレクトリに移動する
tar ファイルを解凍する
$ zcat dcl-6.0.4.tar.gz | tar xvf -
- 解凍したディレクトリの中に移動し, 中に configure ファイルが存在することを確認する. ここでは, configure コマンドを用いて, Mkinclude および, Makefile を自動的に作成し, それを make することでインストールする.
コンパイラを陽に指定するには, 以下のコマンドを用いる(オプション).
$ export FC=<Fortran コンパイラ名> $ export CC=<C コンパイラ名>
- ここでは, FC=ifort として, Intel Fortran を用いる.
configure コマンドを用いて, Mkinclude ファイルを作成する.
$ ./configure [オプション]
指定するオプションはここでは以下の通り.
--prefix=/home/satoki/usr/dcl-6.0.4 # DCL ライブラリを構築する場所 (任意)
注意すべきことは, ここで指定しているパスは, インストールする計算機の環境によって変化するので, 自分の環境にあうように設定する. この他に gtk などは自動でパスを設定してくれる (デフォルトの場所にインストールされていれば) ので, gtk に関するオプションは何も指定しない.
- configure を実行すると, カレントディレクトリに Makefile および Mkinclude ファイルが作成されるので, 作成されていることを確認する.
make を実行して, インストールを行う.
$ make $ make install # <- システム領域にインストールを行う場合は管理者権限で行う.
- エラーがなければ, 正常にインストールされたことになる.
インストール確認作業
では, ソフトが正常にインストールされたかを確認する.
- demo ディレクトリに移動する (カレントディレクトリに生成されているはずである) .
- grph1 ディレクトリの slpack に移動しておく.
slpack の中で Makefile が存在することを確認し, slpack のディレクトリの中で, make を実行する.
$ make
生成された実行ファイルのうち, 任意の1つを実行する.
$ ./slpk0?
以下のような表記が現れるので, 数字で指定し Enter キーを打つ.
WORKSTATION ID (I) ? ; 1:DISPLAY, 2:FILE ;
- DISPLAY は新しいウィンドウが開き, 画面に直接表示される. キーボードで "d" コマンドを打つとカレントディレクトリに dcl_001.png という名称で PNG 形式の画像ファイルが出力される.
- FILE は PDF 形式のファイルとして出力され, ウィンドウは開かない.
- 出力結果が正常に表示されれば, インストールは正常に行われている (表示させようとするファイルによって, 出力結果は異なるので適宜読み替える).
- ちなみに, "slpk01" の実行結果はこちら .
パスの設定
インストールが成功したことを確認したら, パスを設定して, コマンドとして実行できるようにしておく. パスの設定には, 以下のいずれかを行う.
一時的に設定しておきたい場合
$ export PATH=$PATH:[DCL ライブラリを構築した場所の bin ディレクトリ]
起動時に読み込むようにしておきたい場合
ホームディレクトリ以下にある, bash の設定ファイルを変更する.
$ vi ~/.bashrc
で設定ファイルを開き, 最後尾の空行に以下を追加する.
export PATH=$PATH:[DCL ライブラリを構築した場所の bin ディレクトリ]
前者の方法だと, 再起動時にその設定は消去されている.
以上で f77 版 DCL のインストール作業は終了.
f90 版インストール作業
次に, f90 版のインストール作業を行っていく.
- DCL(f90) をダウンロードしたディレクトリに移動する
tar ファイルを解凍する
$ tar zxvf dcl-f90.tar.gz
- 解凍したディレクトリの中に移動し, 中に configure ファイルが存在することを確認する. ここでは, configure コマンドを用いて, Mkinclude および, Makefile を自動的に作成し, それを make することでインストールする.
f77 版から続いてインストール作業を行っている場合は問題ないが, 一旦端末を閉じてしまったときは, 以下のコマンドで, f77 版の Fortran コンパイラと合わせなければならない.
$ export FC=<f77 で使用した Fortran コンパイラ>
ここでは, FC=ifort を設定.
configure コマンドを用いて, Mkinclude ファイルを作成する.
$ ./configure [オプション]
指定するオプションはここでは以下の通り.
--prefix=/home/satoki/usr/dcl-f90 # DCL ライブラリを構築する場所 (任意) --bindir=/home/satoki/usr/bin # DCL 用スクリプトを構築する場所 (任意) --with-dclconfig=/home/satoki/usr/dcl-6.0.4/bin/dclconfig # dclconfig の格納場所
注意すべきことは, ここで指定しているパスは, インストールする計算機の環境によって変化するので, 自分の環境にあうように設定する.
- configure を実行すると, カレントディレクトリに Makefile および Mkinclude ファ>イルが作成されるので, 作成されていることを確認する.
make を実行して, インストールを行う.
$ make $ make install
- エラーがなければ, 正常にインストールされたことになる.
インストール確認作業
では, ソフトが正常にインストールされたかを確認する.
- tutorial ディレクトリに移動する (カレントディレクトリに生成されているはずである) .
- 1d ディレクトリに移動しておく.
以下のコマンドを用いて, 任意の f90 ファイルをコンパイルし, 実行する.
$ dclf90 <f90 ファイル> $ ./a.out
以下のような表記が現れるので, 1~4 (gtk を導入していない場合は 1~3) のうち, 表>示させたいものを数字で指定し, Enter キーを打つ.
WORKSTATION ID (I) ? ; 1:X, 2:PS, 3:Tek, 4:Gtk ;
- 出力結果が正常に表示されれば, インストールは正常に行われている (表示させようとするファイルによって, 出力結果は異なるので適宜読み替える).
- ちなみに, "1d04.f90" の実行結果はこちら .
パスの設定
f77 版での設定と同じように行う. ただし, 指定するディレクトリは, インストール作業で指定した "--bindir=" のディレクトリを指定する.
その他注意事項
エンディアン設定
dcl はフォント, カラーマップ, 地図情報の一部にバイナリデータを用いているため, バイナリデータを用いて描画する場合はエンディアンに注意する. dclf90, dclfrt スクリプトの引数としてエンディアン変換オプションをつける場合, DCL ソースのコンパイル時にも同一のエンディアン変換コマンドを使用しないと DCLf77 の szfint.f において引数エラーが出ることがある. それを回避するため, f77, f90 版両方の Mkinclude の FLAGS にエンディアン変換オプション
-fconvert=big-endian # gfortran の場合
などを設定してコンパイル, インストールを行う. つまり, dclfrt, dclf90 を利用するときのエンディアンと, DCL のビルド時のエンディアンは一致させておくこと.
configure で遭遇するエラー
frt + fcc でのビルド
- frt コマンドに "-w" オプションがない場合がある.
- この場合, "-w" オプションはコンパイラで使われず, リンカに渡される. しかし, リンカではこのオプションを使えないので, conftest.o と conftestf.o のリンクができずエラーとなる.
- 対症療法となる.
configure の該当個所の直接編集 (構築環境が Linux の場合).
IRIX64) forts="f90 f77 g77" fflags=-w ;; Linux) forts="f95 f90 ifort ifc g95 pgf77 f77 gfortran g77" fflags=-w <- ここを "fflags=" に書き換え. ;; OSF1) forts="f90 f77" ;; SunOS) case `uname -r` in 4*) forts="f77 frt g77" fflags=-w ;; 5*) forts="f90 f77 frt g77" SUNF=yes
- これらはすべて, config.log に warning として出力されている.
加えて, プリプロセッサ指定もおかしかったらしいので,
export FC=frt export CC="fcc -Xg" export CPP="fcc -Xg -E" export CPPFLAGS="-DNAGf90Fortran"
と設定した.
参考資料
- DCL に付属の INSTALL ファイル
- GTK+ のインストールについては, こちら .