地球流体電脳ライブラリー (dcl-5.2) インストール手順 2000/10/24 塩谷 雅人, 鍵本 崇 0. はじめに ここでは, 「電脳ライブラリ」をインストールする手順について述べる. このバージョンでは図形出力媒体として, X (X サーバー), PS (ポストスクリ プト), Tek (テクトロ端末) の3つをサポートしている. ウインドウシステム として X11R4 (以上) が正しくインストールされていなければならない. さら にプリンターとしてはポストスクリプト対応のものが必要である. X, PS とも カラーの出力に対応している. dcl-5.0.2 以前では「電脳ライブラリ」をインストール際, それぞれのプラッ トフォームに対して適切な Mkinclude ファイルを用意しなければならなかっ たが, dcl-5.1 以降では, この煩わしさを解消するために configure スクリ プトを用いることによって, Mkinclude ファイルを自動的に生成できるように なっている. たとえば以下の OS とコンパイラの組合せで, configure スクリプトが生成す る Mkinclude ファイルにもとづき, 「電脳ライブラリ」を構築できることが (dcl-5.1 において)確認されている. SunOS 4.1.4 + f77 + acc (SUN Compiler) Mkinclude.sun1 Solaris 2.6 + f77 + cc (SUN Compiler) Mkinclude.sol1 Solaris 2.6 + frt + fcc (Fujitsu Compiler) Mkinclude.sol2 Solaris 2.6 + g77 + gcc (X ranlib に不具合) Mkinclude.sol3 Digital UNIX V4.0 + f77 + cc Mkinclude.alpha1 Digital UNIX V4.0 + f90 + cc Mkinclude.alpha2 Vine Linux 1.1CR + g77 + gcc Mkinclude.linux1 Debian GNU/Linux 2.1 + f77(g77) + cc(gcc) Mkinclude.linux2 Kondara MNU/Linux 1.0 + g77 + gcc Mkinclude.linux3 Linux MLD 4.0 + f77(g77) + cc(gcc) Mkinclude.linux4 (これらの動作を確認したプラットフォームについて, configure スクリプト が生成した Mkinclude ファイルは, sys ディレクトリの中に収められている. ファイル名は上記右側に書かれている. ただしこれらは dcl-5.1 に対するも ので, 定義されているマクロの一部は dcl-5.2 と異なっていることに注意す ること. ) このように比較的一般的なプラットフォームについては, configure スクリプ トを用いれば容易にライブラリの構築は可能である. configure スクリプトを 用いたインストール方法については「1. configure によるインストール」を 参照されたい. configure スクリプトによるインストールがうまくいかない場 合は, 「2. パスの設定」以降を参照されたい. 1. configure によるインストール configure スクリプトによる初期設定の自動化は現在 GNU のソフトウェアは もちろんのこと, さまざまなフリーソフトウェアで実現されている. この confiugre スクリプトにはいくつかのオプションが用意されており, ユーザ自 身でインストール環境をカスタマイズすることも可能である. 具体的なオプショ ンについては以下のようなものがある. < オプションの説明 > % ./configure [options] [options] --help ヘルプメッセージの出力 --quiet, --silent 実行状態の非表示 --prefix=PREFIX インストールディレクトリを PREFIX に設定 デフォルトは /usr/local --x-includes=DIR X Window システムの include ファイルのある ディレクトリを指定 --x-libraries=DIR X Window システムのライブラリのあるディレ クトリを指定 --with-oldsrc dcl-4.x とコンパチブルにする さて, この configure スクリプトを用いた「電脳ライブラリ」の構築方法は 以下の通りである. 1) dcl 本体を展開する % zcat dcl-5.2.tar.gz | tar xvf - % cd dcl-5.2 2) configure を実行する (例1) 資源を /usr/local/dcl-5.2 に構築する % ./configure --prefix=/usr/local/dcl-5.2 (例2) configure が捜し出すコンパイラとは異なるものを使用する % setenv CC fcc % setenv FC frt % ./configure 3) あとは make; make install で dcl 本体がインストールされる なお configure に関連するファイルとしては以下のようなものがある. Mkinclude.in : Mkinclude を作成するためのプロトタイプ aclocal.m4 : DCL 用 autoconf マクロ configure : configure スクリプト configure.in : configure スクリプト作成用プロトタイプ ライブラリを構築する作業は make でおこなうが, make が用いる(各所に散ら ばる) Makefile の中では Mkinclude というファイルを取り込んでいる. Mkinclude ファイルはこの INSTALL ファイルと同じ電脳ライブラリのトップ ディレクトリにあって, システムに依存しうるいくつかのマクロ名が定義され ている. configure はこの Mkinclude ファイルを自動的に生成する. もしも configure が生成する Mkinclude ファイルを使ってもうまくインストールで きない場合は, この Mkinclude ファイルを適切に書き換えてやれば (「3. Mkinclude ファイル」参照), 以下に述べるような手順でインストール 作業がおこなえるはずである. 2. パスの設定 make でコンパイルおよびインストールをするために, まずパスの設定をおこ なう. % setenv DCLDIR ~/dcl-5.2 のようにこれから移植しようとする電脳ライブラリが置かれているディレクト リ(この例ではとあるユーザーのホームディレクトリに電脳ライブラリが展開 されているとする)を環境変数 DCLDIR に設定する. この環境変数は個人でラ イブラリーを構築し, 利用するときにも参照されるので .cshrc に書き込んで おくとよい. 3. Mkinclude ファイル トップディレクトリ (すなわち cd $DCLDIR ではいったところ) に Mkinclude というファイルがあっていくつかのマクロ名が定義されており, $DCLDIR 以下 の Makefile ではこの情報を include して使っている. また, Mkinclude ファイルの先頭部分にはサフィックスルールが記述されてい る. (ふつうこれらはコメントアウトされていても動作する. ) 「0. はじめに」でも述べたが, 電脳の標準環境以外でもいろいろな環境で電 脳ライブラリは移植されており, その際用いられた Mkinclude ファイルが $DCLDIR/sys の下にあるので, 必要に応じて $DCLDIR ディレクトリにコピー・ 変更して用いればよい. Mkinclude ファイルの中で注意すべきマクロ名として次のものがある. a) コマンド, ライブラリ等を格納する場所を指定するマクロ BINDIR : dclfrt などのコマンドを格納するディレクトリ LIBDIR : ライブラリを格納するためのディレクトリ DBASEDIR : データベース関連のファイルを格納するためのディレクトリ 電脳ライブラリをインストールしようと思った人が, 必ずしも root になれる わけではないであろうから, これらのマクロ名は初期設定ではそれぞれ, $DCLDIR/bin, $DCLDIR/lib, $DCLDIR/lib/dcldbase となっている. したがっ て最初からシステム管理者がこれらとは異なる場所にインストールしようとす るときは, この部分を書き換える必要がある. DCLVERSIOB : 電脳ライブラリのバージョン (x.x 形式) DCLVERNUM : 電脳ライブラリのバージョン (xx 形式) DCLLANG : どの言語に対するパッケージかを示す configure スクリプトを用いていれば, ここには適切な値が入っているはずで あ. 手作業で Mkinclude を編集しようとして, もしもここに値が定義されて いない場合は, バージョン名(dcl-5.2 なら 52)を書いておいた方がライブラ リの整合性を取りやすい. b) X 関連のオプションを指定するマクロ XINCPATH : X 関連の include ファイルがおかれているディレクトリ XLIBPATH : X 関連のライブラリ(libX11.a)がおかれているディレクトリ XLIBOPT : X 関連で用いるライブラリ名 X 関連の include ファイルが, あらかじめシステムが探しにゆく標準的なディ レクトリにおかれていれば XINCPATH は指定しなくてよい. もしもそのように なっていない場合, C のプリプロセッサーが解釈するオプションとして例えば XINCPATH = -I/usr/X11R5/include のように指定する. 同様に, X 関連のライブラリ(ここで用いるのは libX11.a のみ)が, あらかじ めシステムが探しにゆく標準的なディレクトリにおかれていれば XLIBPATH は 指定しなくてよい. もしもそのようになっていない場合, ローダーが解釈する オプションとして例えば XLIBPATH = -L/usr/X11R5/lib のように指定する. X 関連で用いるライブラリは libX11.a のみであるが, システムによってはこ れを用いるためにネットワーク関係のライブラリ libsocket.a libnsl.a を必 要とすることがある. そのような場合 XLIBOPT にそれらのライブラリ名をロー ダーが解釈するオプションとして書き加えなければならない. c) ローダーに渡すべき X 関連以外のライブラリ名に関するマクロ LDLIBOPT : X 関連以外のライブラリ名 X 関連以外で必要となるライブラリ名をローダーが解釈するオプションとして 指定する. ふつうは, 数学ライブラリ(-lm)が必須である. これ以外に, SYSTEM V 系の OS (たとえば SunOS 5.x など)ではソケットライブラリ (-lsocket と -lnsl)が必要となる. d) ライブラリ構築に際するいくつかの選択に関するマクロ MISC1EXT : misc1 において, 他では用いられないライブラリ名 OLDSRC : ver.4 の古いインターフェイスを収めたディレクトリ名 MISC1EXT には src/misc1 の下にあって, 現在のところ他のライブラリからは 用いられることのないライブラリ名が列記されている. 「0. はじめに」に書 かれているような環境では, これらのライブラリもすべてコンパイル・インス トールが可能であるが, システムによっては MISC1EXT のうちのいくつかがう まく移植できないことがあるかもしれない. そのような場合は, うまく移植で きないライブラリをこのリストから外してやればよい. 例えば, fiolib の移 植がうまくいかない場合, MISC1EXT = clcklib randlib hexlib reallib のように fiolib をリストから外せばよい. Ver.4 で用いられていたが ver.5 で外されたルーチンが src/grph1/olrsrc, src/grph2/oldsrc として収められている. これらの古いインターフェイスも 移植したい場合, OLDSRC = oldsrc と指定する. 古いインターフェイスが必要ないときは OLDSRC は空のままにし ておけばよい. e) コマンドおよびそのオプションに関するマクロ CC : C コンパイラ名 CFLAGS : C コンパイラが解釈するオプション FC : Fortran コンパイラ名 FFLAGS : Fortran コンパイラが解釈するオプション RANLIB : ランダムライブラリを作成するコマンド名 C および Fortran のコマンド名およびコンパイラオプションはそれぞれのシ ステムで適切なものを指定すること. システムによってはライブラリをリンク する際に, ライブラリをランダムライブラリ化しなければならない. RANLIB にはそのコマンド名を指定する. この操作が必要でないシステムについては RANLIB として, たとえば touch コマンドなどを指定しておけばよい. (注意) Fortran と C の結合規約 システムに依存するルーチンや X 関連のルーチンは C 言語を用いて書かれて いる. Fortran と C との結合に際しては, SunFORTRAN で使われているように 「C 側の関数名に '_' (アンダースコアー)を付け加えることで, Fortran 側 からは '_' なしのサブルーチン(あるいは関数)として呼ぶことができる」と いうルールに従っている. これは言い換えると Fortran プログラムのコンパイル時に, ルーチン名に対 してアンダースコアーを付け加えることにほかならない. SunFORTRAN で使わ れているこのような結合規約に従っていないシステムもあるが, そのようなシ ステムでも多くの場合 Fortran のコンパイラオプションとしてアンダースコ アーを付加するオプション(たとえば IBM AIX XL Fortran/6000 (xlf) では -qextname) が用意されていることが多いので, マニュアルなどを注意深く参 照されたい. Fortran 側にアンダースコアーを付加するオプションがない場合は, C 側の関 数名からアンダースコアーを取ってやればよい. f) マニュアル作成に用いられるコマンドに関するマクロ JLATEX : jLaTeX のコマンド名 DVI2JPS : dvi ファイルを PS ファイルに変換するコマンド名. これらは dcl-5.1 以降用いられない. dcl-5.0.2 以前では, $DCLDIR/doc の 下に jLaTeX で書かれたマニュアル群が生成されたが, dcl-5.1 以降はマニュ アル群が添付されていない. マニュアルは http://www.gfd-dennou.org/arch/dcl/html/dcl_doc.html から入手されたい. g) math1/syslib/glpget.f で用いられるマクロ INTMAX REALMAX REALMIN REPSL これらの詳細については src/math1/syslib の NOTE を参照されたい. h) misc1/clcklib/clckst.c で用いられるマクロ CLK_PER_SEC (CLOCKS_PER_SEC) CLK_RSL_TCK (CLK_TCK) これらはカッコ内に示された識別子に対応する. ANSI 対応の C コンパイラで はふつう, カッコ内に示された識別子が定義されているのでこれらのマクロを 指定する必要はない. 詳しくは src/misc1/clcklib の NOTE を参照されたい. i) math1/oslib で用いられるマクロ OSQARN OSGARG 現在のところ, OSQARN については iargc または dummy の 2 つが指定可能で ある. システムが iargc を持つ場合は iargc を, 持たない場合は dummy を 指定する. OSGARG については getarg または dummy の 2 つが指定可能である. システ ムが getarg を持つ場合は getarg を, 持たない場合は dummy を指定する. これの詳細については src/math1/oslib の NOTE を参照されたい. j) grph1/csgi で用いられるマクロ CSGI ICHAR が0 から 255 の間の整数値を返す場合 general, -127 から 127 の間 の値を返す場合 other を指定する. 詳しくは src/misc1/clcklib の NOTE を参照されたい. 4. make - プログラムのコンパイル ここまで準備したら, トップディレクトリで (つまり cd $DCLDIR ではいった ところ) % make とすれば, 必要なコンパイルおよびデータベースファイルの作成, および $DCLDIR/bin ディレクトリにあるコマンドの設定がおこなわれる. 5. make - インストール コンパイルがすんだらインストールをおこなう. % make install とすれば, ライブラリとデータベースの構築, env2 にあるアプリケーション プログラムの作成とそれらの $BINDIR への移動, および必要に応じて dclfrt などのコマンド群の $BINDIR への移動がおこなわれる. 6. デモプログラムの作成 ここまでで必要な作業は終わっているので, 次に $DCLDIR/demo に移動してデ モプログラムを作成する. % cd $DCLDIR/demo % make make 終了後, 各ディレクトリを下がってデモプログラムを実行してみるとよ い. グラフィック出力を含むものの実行例は次節参照のこと. 7. 使用例 電脳ライブラリを利用するには dclfrt コマンドを用いる. これは基本的に Mkinclude のマクロ名 FC で指定した Fortran コンパイラのコマンドと同じ で, ここまでの操作によって作成されたライブラリをあらかじめリンクするよ うになっている. このコマンドを利用するためには, Mkinclude のなかの BINDIR で指定されているディレクトリ名をシェル変数 $path に書き加えてお かなければならない. これは .cshrc に書き加えておけば簡単である. たとえ ば test01.f というグラフィックを含む次のようなプログラムがあったとする と(ふつうの Fortran コンパイラでは -o オプションで実行形式ファイル名を 指定する), PROGRAM TEST01 WRITE(*,*) 'WORKSTATION ID (I) ? ;' CALL SGPWSN READ(*,*) IWS CALL SGOPN(IWS) CALL SGFRM CALL SGSVPT(0.1,0.9,0.1,0.9) CALL SGSWND(0.0,10.0,0.0,10.0) CALL SGSTRN(1) CALL SGSTRF CALL SLPWWR(1) CALL SLPVPR(1) CALL SGTXZU(5.0,5.0,'TEST FOR GRPH1',0.03,0,0,3) CALL SGCLS END % dclfrt -o test01 test01.f によって test01 という実行ファイルが作られる. (以下は標準ライブラリに おける例である.) % test01 といれると WORKSTATION ID (I) ? ; 1:X, 2:PS, 3:Tek ; ときいてくる (ワークステーション名のリストは SGPWNS によって出力してい る) ので, X ウインドウシステムが起動されている状態で1を入力するとウイ ンドウが現れ, ウインドウの位置を確定すると描画がはじまる. 改ページ, 図 形表示の終了はクリックでおこなう. 2 (PS)を指定すると, dcl.ps というファ イルがカレントディレクトリにできるので % lpr dcl.ps とすると PostScript プリンターに出力される. また3 (Tek)を指定するとテ クトロ端末での描画が可能である. 8. 後始末 ディスクスペースに余裕がなければ, インストール途中に作成されたオブジェ クトファイル, あるいはデモプログラム, TeX 関連のファイルを消去する. トッ プディレクトリで % make clean とすると不用なファイルが消去される. なお, % make clean.all とすると, ローカルに生成したライブラリなどもすべて消去される.