1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459
|
* This document written in UTF-8
地球流体電脳ライブラリー (dcl-6.5) インストール手順
2011/12/26 塩谷 雅人, 鍵本 崇, 乙部 直人, 神代 剛, 辻野 智紀
2014/06/03 乙部直人
-. フォントについて
マーカー用TrueTypeフォントのインストールについては
まだ,環境ごとにconfig出来るようにはなっていません.
Windowsでは src/env1/sysfont の ttfファイルを C:\Windows\Fonts
にコピーして下さい.
Linux では同じファイルを ~/.fonts 以下か /usr/local/share/fontsの
下にコピーしてfc-cache を実行して下さい.もしくは./configureした後
Mkinclude の下の方の debfontdir を編集すればいいはずです.
0. はじめに
ここでは, 「電脳ライブラリ」をインストールする手順について述べる.
このバージョンでは図形出力媒体として, CRT (GTK), EPS (エン
カプセルドポストスクリプト), PDF (ポータブルドキュメントフォーマット),
png (ビットマップ画像) の4つをサポートしている.
ウインドウシステムとして X11R4 (以上) が正しくインストールされていなけ
ればならない. また、gtk+3(gtk+2)とcairo が利用できる必要がある。
「電脳ライブラリ」をインストール際, それぞれのプラットフォームに対して
適切な Mkinclude ファイルを用意しなければならない. dcl-5.1 以降では,
configure スクリプトを用いることによって, Mkinclude ファイルを自動的に
生成できるようになっている.
比較的一般的なプラットフォームについては, configure スクリプトを用いれ
ば容易にライブラリの構築は可能である. configure スクリプトを用いたイン
ストール方法については「1. configure によるインストール」を参照された
い. configure スクリプトによるインストールがうまくいかない場合は,
「2. パスの設定」以降を参照されたい. Windows環境については文末に別に
記述したのでそちらを参照されたい.
1. configure によるインストール
configure スクリプトによる初期設定の自動化は, 現在, GNU のソフトウェア
はもちろんのこと, さまざまなフリーソフトウェアで実現されている. この
confiugre スクリプトにはいくつかのオプションが用意されており, ユーザ自
身でインストール環境をカスタマイズすることも可能である. 具体的なオプショ
ンについては以下のようなものがある.
< オプションの説明 >
% ./configure [options]
[options]
--help ヘルプメッセージの出力
--quiet, --silent 実行状態の非表示
--prefix=PREFIX インストールディレクトリを PREFIX に設定
デフォルトは /usr/local
--with-gtk2 グラフィックライブラリをgtk+2.0に変更
さて, この configure スクリプトを用いた「電脳ライブラリ」の構築方法は
以下の通りである.
0) 必要なソフトウェアをインストールする
FortranとCのコンパイラをインストールする。XやGTKの開発用ライブラリをインストールする。
最近のLinuxなどではパッケージで用意されていると思われるので、そのような物を
適宜インストールするのが良い.
1) dcl 本体を展開する
% zcat dcl-7.5.0.tar.gz | tar xvf -
% cd dcl-7.5.0
2) configure を実行する
(例1) 資源を /usr/local/dcl-7.5.0 に構築する
% ./configure --prefix=/usr/local/dcl-7.5.0
(例2) configure が捜し出すコンパイラとは異なるものを使用する
% export CC=gcc
% export FC=gfortran
% ./configure
(例3) 使用するgtkを 3ではなく2にする
% ./configure --with-gtk2
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 でコンパイルおよびインストールをするために, これから移植しようと
する電脳ライブラリが置かれているディレクトリ(この例ではとあるユーザー
のホームディレクトリに電脳ライブラリが展開されているとする)を環境変数
DCLDIR に設定しなければならない. ただし, configure によって Mkinclude
ファイルが正しく生成されている場合は, その中で DCLDIR は定義されている
ので, ふつうはユーザーが環境変数 DCLDIR を設定する必要はない.
configure によって Mkinclude ファイルが正しく生成されなかった場合は,
Mkinclude ファイルの中の DCLDIR を適切に書くか, 以下のように環境変数と
してパスの設定をおこなう必要がある.
% export DCLDIR=~/dcl-7.5.0
3. Mkinclude ファイル
トップディレクトリ (すなわち cd $DCLDIR ではいったところ) に Mkinclude
というファイルがあっていくつかのマクロ名が定義されており, $DCLDIR 以下
の Makefile ではこの情報を include して使っている.
また, Mkinclude ファイルの先頭部分にはサフィックスルールが記述されてい
る. (ふつうこれらはコメントアウトされていても動作する. )
Mkinclude ファイルの中で注意すべきマクロ名として次のものがある.
a) コマンド, ライブラリ等を格納する場所を指定するマクロ
BINDIR : dclfrt などのコマンドを格納するディレクトリ
LIBDIR : ライブラリを格納するためのディレクトリ
INCDIR : include ファイルを格納するためのディレクトリ
DBASEDIR : データベース関連のファイルを格納するためのディレクトリ
これらのマクロ名は初期設定ではそれぞれ, $(prefix)/bin, $(prefix)/lib,
$(prefix)/include, $(LIBDIR)/dcldbase となっている. なおこれらとは別に,
上記のディレクトリを一時的に置くための場所を指定するために, LBINDIR,
LLIBDIR, LINCDIR, LDBASEDIR などがある.
DCLVERSION : 電脳ライブラリのバージョン (x.x 形式)
DCLVERNUM : 電脳ライブラリのバージョン (xx 形式)
DCLLANG : どの言語に対するパッケージかを示す
configure スクリプトを用いていれば, ここには適切な値が入っているはずで
あ. 手作業で Mkinclude を編集しようとして, もしもここに値が定義されて
いない場合は, バージョン名(dcl-5.3 なら 53)を書いておいた方がライブラ
リの整合性を取りやすい.
b)gtkに関するマクロ
Gtk に関するマクロとして, GTKVERSION, GTK_CFLAGS, GTK_LIBS
などがある.
c) 図形出力装置の数に関するマクロ
DCLNWS : 図形出力装置の数
通常の構成では, DISP, Files の2つの出力装置をサポートしている. この場
合, DCLNWS は 2 となる.
d) ライブラリ構築に際するいくつかの選択に関するマクロ
MISC1EXT : misc1 において, 他では用いられないライブラリ名
MISC1EXT には src/misc1 の下にあって, 現在のところ他のライブラリからは
用いられることのないライブラリ名が列記されている. 「0. はじめに」に書
かれているような環境では, これらのライブラリもすべてコンパイル・インス
トールが可能であるが, システムによっては MISC1EXT のうちのいくつかがう
まく移植できないことがあるかもしれない. そのような場合は, うまく移植で
きないライブラリをこのリストから外してやればよい. 例えば, fiolib の移
植がうまくいかない場合,
MISC1EXT = clcklib randlib hexlib reallib
のように fiolib をリストから外せばよい.
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) math1/syslib/glpget.f で用いられるマクロ
INTMAX
REALMAX
REALMIN
REPSL
これらの詳細については src/math1/syslib の NOTE を参照されたい.
g) misc1/clcklib/clckst.c で用いられるマクロ
CLK_PER_SEC (CLOCKS_PER_SEC)
CLK_RSL_TCK (CLK_TCK)
これらはカッコ内に示された識別子に対応する. ANSI 対応の C コンパイラで
はふつう, カッコ内に示された識別子が定義されているのでこれらのマクロを
指定する必要はない.
詳しくは src/misc1/clcklib の NOTE を参照されたい.
h) math1/oslib で用いられるマクロ
OSQARN
OSGARG
双方ともに、Fortran2003 が使用可能な場合にはF2003が指定される。
使用できない場合には, OSQARN については iargc または dummy の 2 つが指定可能で
ある. システムが iargc を持つ場合は iargc を, 持たない場合は dummy を
指定する.
OSGARG については getarg または dummy の 2 つが指定可能である. システ
ムが getarg を持つ場合は getarg を, 持たない場合は dummy を指定する.
これの詳細については src/math1/oslib の NOTE を参照されたい.
i) grph1/csgi で用いられるマクロ
CSGI
ICHAR が0 から 255 の間の整数値を返す場合 general, -127 から 127 の間
の値を返す場合 other を指定する.
詳しくは src/misc1/clcklib の NOTE を参照されたい.
j) grph1/swpack で用いられるマクロ
IWIDTH : X で表示するウインドウの横幅
IHEIGHT : X で表示するウインドウの縦幅
初期値はそれぞれ 900, 650 となっている.
k) grph2/uwpack で用いられるマクロ
MAXNGRID : 作業領域の大きさ
初期値は 4000 となっている.
4. make - プログラムのコンパイル
ここまで準備したら, トップディレクトリで (つまり cd $DCLDIR ではいった
ところ)
% make
とすれば以下の作業が行われる. (カッコ内には, make の具体的なターゲット
名を記す.) コンパイル(object), ライブラリの作成(library), データベースの
作成(dbase), , および $DCLDIR/bin ディレクトリにある基本コマンドの作成(script)
env2 にあるアプリケーションプログラムの作成(exec),exec は明示的に指定する必要がある.
% make exec
5. make - インストール
コンパイルがすんだらインストールをおこなう.
% make install
とすれば, ライブラリ, データベース, アプリケーションプログラムとコマン
ドコマンド群を適当なディレクトリにコピーする.
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
とする. また3 (Tek)を指定するとテクトロ端末での描画が可能である.
8. 後始末
ディスクスペースに余裕がなければ, インストール途中に作成されたオブジェ
クトファイル, あるいはデモプログラムを消去する. トップディレクトリで
% make clean
とすると不用なファイルが消去される.
なお,
% make distclean
とすると, ローカルに生成したライブラリなどもすべて消去される.
A. Windowsでのインストール
パッケージを任意の場所に展開する.
展開されたトップディレクトリにある dclfrtvar.bat をダブルクリックする.
スタートメニューに登録するとよい.
必要な環境が設定されるはずであるが、されない場合は setenv.bat 内を確認する.
Intel Fortran のディレクトリなどが標準的でないか確認する.
A.1 Windows 上での DCL の Build
Microsoft Visual C++ がある場合は、nmake -f Makefile.win とすると
ビルドされ、 nmake -f Makefile.win install とすることでインストールされる.
インストール先などは トップディレクトリの Mkinclude.win に記述する.
A.2 Mingw環境
config.h がうまく作成されないので
cp config.h.mingw config.h を手動で行う必要がある.
B. CHECK
インストールが正しくおこなわれているかどうかは, たとえば以下の点に注意
する. (システムが用意する電脳ライブラリのコマンド類と区別するために,
それぞれのディレクトリに移って作業すること. )
B.1. $BINDIR (Mkinclude 参照) にあるいくつかのコマンドを実行してみる.
% ./dclclr
カラーマップが正しく表示されるか
% ./dcldate; date
日付情報が正しく表示されるか(date コマンドの出力と同じ
か)
% ./dcldbs
データベースファイルのありかは正しいか
% ./dclfont
フォントのリストが正しく表示されるか
% ./dclfont -sg:ifont=2
コマンドラインオプションが通るか
% ./dclver
電脳ライブラリのバージョンは正しいか
% ./repsl
Mkinclude で指定した REPSL の値に近いか
B.2. $DCLDIR/demo/math1/oslib のチェック
% ./oslb01
osgenv が正しく動作しているか(printenv HOME と同じパス
を示すか)
% ./oslb02
osexec が正しく動作しているか(ls の結果と同じか)
B.3. $DCLDIR/demo/misc1/clcklib のチェック
% time ./clck01
clckst.c が正しく動作しているか(time で出力される実行
時間とだいたい等しいか - CPU の遅いマシンだと時間がか
かるので注意!)
B.4. $DCLDIR/demo/misc1/randlib のチェック
% ./rand01
rngu0.c が正しく動作しているか(円周率 - 3.14 - に近い
値が出力されるか)
B.5. $DCLDIR/demo/grph2/umpack のチェック
% ./test05
すべての地図投影が正しく表示されるか
|