Vine Linux 2.6,Vine Linux 3.0へのインストール記録,プログラムのコンパイル方法です.
コンパイル時にフォートランコンパイラの g77がインストールされている必要があるので, g77が入っていない場合はapt-getをコマンドでインストールします.
$ su # apt-get update # apt-get install gcc-g77
でインストールできるはずです.
PGPLOTの最新版は5.2.2です.
などからpgplot5.2.tar.gzをダウンロードし,適当な場所に保存しておきます.
ここではソースファイルを「/usr/local/src」に展開します(/usr/local以下のディレクトリで作業するにはroot権限が必要です).
$ su # cd /usr/local/src # cp 保存場所/pgplot5.2.tar.gz . # tar xzvf pgplot5.2.tar.gz
つぎに,インストール用のディレクトリとして「/usr/local/pgplot」というディレクトリをつくります.
# mkdir /usr/local/pgplot
このディレクトリにmakefileをつくるため,ソースを展開したディレクトリのdrivers.listというファイルをコピーし,編集します(/usr/local/src/pgplotにmakefileを作ってはいけないようです).
# cd /usr/local/pgplot # cp /usr/local/src/pgplot/drivers.list .
テキストエディタで drivers.list 開き,編集します.必要なドライバのコメントアウト(行頭の「!」 )を外すと,そのドライバが使えるようになります.どのコメントを外せばいいのか詳しくは知りませんが,最低限以下のものは使えるようにした方がいいようです.
(PGPLOTでグラフ出力したとき,先頭にVが付いているドライバは, Vが付いていないものと比べて表示が270度回転されます.)以上で下準備ができたので,makemakeを使ってmakefileをつくります.
# /usr/local/src/pgplot/makemake /usr/local/src/pgplot linux g77_gcc
makefileができたらコンパイルします.
# make
PGPLOTをCから呼び出せるように,もうひとつコンパイルします.
# make cpg
エラーが出ずに無事コンパイル終了したら,もう使わないファイルを消します.
# make clean
rootから抜けます.
# exit
PGPLOTのライブラリをどこからでも使えるよう,ライブラリのある場所などにパスを通します.「~/.bashrc」というファイル(~/ はホームディレクトリの意味)に以下を記述します.
export PGPLOT_DIR=/usr/local/pgplot export PGPLOT_DEV=/xserv export LD_LIBRARY_PATH=/usr/local/pgplot
書いたら
$ source ~/.bashrc
とするか,ログインしなおして環境変数の変更を反映させます.
では,コンパイル時に/usr/local/pgplotにデモプログラムができていますから,これをを実行して試してみましょう.
$ /usr/local/pgplot/pgdemo1
とすると
Graphics device/type (? to see list, default /xserv):
というメッセージがコンソールに表示されます. ?をタイプすれば使用可能なドライバの一覧が出てきます.そのままEnterを押せばデフォルトのxservで表示されます. xservで実行した場合,仮想ターミナルに
version=v5.2.2 state=OPEN user=hamu now=15-Aug-2004 22:58 device= file= type=XSERVE dev/type=/XSERVE hardcopy=NO terminal=NO cursor=YES Plot dimensions (x,y; inches): 11.20, 8.41 (mm): 284.55, 213.70 Type for next page:
というメッセージと,XWindow上に
という画面が表示されます.仮想ターミナルでEnterを押せば,つぎつぎにグラフの画面が変わっていきます.他にもデモプログラムはあるので,試してみましょう.デモプログラムのソースは/usr/local/src/pgplot/examples/以下に(言語はFORTRAN), C言語のソースは/usr/local/src/pgplot/cpg/以下にあります.
デモプログラムを表示させて満足したら,今度は自分でつくったCプログラムから使えるようにします.そのためのコンパイルには少しオプションが必要です.コンパイルには以下のオプションを付け,g77 でやるといいようです(途中改行しません).
$ g77 ファイル名 -I/usr/local/pgplot -L/usr/local/pgplot -L/usr/X11R6/lib -lcpgplot -lpgplot -lm -lX11
うまくいかない場合はオプションを変えていろいろ試してみるといいかもしれません.ライブラリの場所 (-Lではじまる部分) などを確認してみましょう.
このコンパイルラインは長いので,シェルスクリプトかMakefileを作っておくと後々楽です.
一番単純なのはつぎのようなものです.
# !/bin/sh g77 $1.c -o $1 -I/usr/local/pgplot -L/usr/local/pgplot -L/usr/X11R6/lib -lcpgplot -lpgplot -lm -lX11
これを g77pgplot という名前で保存し,パスの通ったディレクトリに置きます.そして
$ chmod +x
として実行権限を持たせておきます.そしたら
$ g77pgplot ファイル名(拡張子なし)
でコンパイル可能です.
Makefileという名前のファイルをプログラムのソースファイルと同じディレクトリに作っておけば make とタイプするだけで実行ファイルができあがります.ソースファイル名が foo.c なら,つぎのような感じです.
## Compiler, tools and options OBJS = foo.o TARGET = foo CC = g77 CFLAGS = -O3 -march=i686 -fomit-frame-pointer -malign-double -funroll-loops -Wall INCDIRS = -I/usr/local/pgplot LIBDIRS = -L/usr/local/pgplot -L/usr/X11R6/lib LIBS = -lcpgplot -lpgplot -lm -lX11 ## Implicit rules .SUFFIXES: .c .o ## Build rules all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(OBJS) -o $(TARGET) $(CFLAGS) $(LIBDIRS) $(LIBS) ## Compile .c.o: $*.c $(CC) -c $*.c $(CFLAGS) $(INCDIRS) ## Clean clean: rm -f $(OBJS) $(TARGET)
foo の部分は実際のソースファイル名に置き換えてください.この例では最適化オプション(-O3 -march=i686 -fomit-frame-pointer -malign-double -funroll-loops)も付けています.