Knutu先生のbddを使う方法

http://www-cs-faculty.stanford.edu/~knuth/programs.html

からBDD15をダウンロード。bdd15.wという不思議な拡張子になっている。

cweb

.wファイルはcwebという、texのソースとcのコードを一緒に書くシステムを利用したファイル。 cwebをコンパイルして、bdd15.wをbdd15.texとbdd15.cに分離しなければならない。

cwebは

http://www-cs-faculty.stanford.edu/~knuth/cweb.html

にある。

cwebコンパイル

cweb.tar.gzをダウンロードしたら必ず空のディレクトリに入れてから、

tar vzxf cweb.tar.gz

で解凍。ディレクトリが作られないタイプのtarallなのでそのまま解凍するとカレントに ファイルが飛散して大変。

Makefile改変

texのファイルの置き場などをかえていく。 システムファイルを汚染したくない場合は、適宜home以下のディレクトリに設定を変えておく。 macでの自分の設定。実行ファイルだけ使えれば良いので、make installしなくても良い。 であれば、以下の設定は不要かも。

# directory for TeX inputs (cwebmac.tex goes here)
MACROSDIR= /opt/local/share/texmf/tex/generic
# directory for CWEB inputs in @i files
CWEBINPUTS= /Users/ryu/usr/lib/cweb
# extension for manual pages ("l" distinguishes local from system stuff)
MANEXT= l
# directory for manual pages (cweb.1 goes here)
MANDIR= /Users/ryu/usr/share/man/man$(MANEXT)
# destination directory for executables; must end in /
DESTDIR= /Users/ryu/usr/bin/
# directory for GNU EMACS Lisp code (cweb.el goes here)
EMACSDIR= /Users/ryu/.emacs.d/site-lisp

make

$ make all
$ make install #実行ファイルだけ移動して使うなら不要

ドキュメントの分離

作られたコマンドでまずは、bdd15.wからtex関係のファイルを分離する。

$cweave bdd15.w 
$tex bdd15.tex
$dvipdfm bdd15.dvi

これで、bdd15のドキュメントがpdfで手に入る。texのコンパイルがplatexではなくtexである点に注意

c言語sourceの分離

$ctangle bdd15.w

コンパイルするにはStanford GraphBase?のライブラリを静的にリンクしてやる必要がある。

なので、次の目標はStanford GraphBase?のコンパイル

http://www.cs.sunysb.edu/~algorith/implement/graphbase/implement.shtml

上記サイトから手に入る。 例によって、手に入れたsgb.tar.gzはディレクトリを掘ってからそこに解凍。 このライブラリもcwebを使って書かれているのでcwebのインストールは済ませておく。 Makefileを適当に書き換えて、ライブラリなどのインストール先を調整。

#   Change SGBDIR to the directory where all GraphBase files will go:
SGBDIR = /Users/ryu/local/sgb
#   Change DATADIR to the directory where GraphBase data files will go:
DATADIR = $(SGBDIR)/data
#   Change INCLUDEDIR to the directory where GraphBase header files will go:
INCLUDEDIR = $(SGBDIR)/include
#   Change LIBDIR to the directory where GraphBase library routines will go:
LIBDIR = /Users/ryu/local/lib
#   Change BINDIR to the directory where installdemos will put demo programs:
BINDIR = /Users/ryu/usr/bin
#   Change CWEBINPUTS to the directory where CWEB include files will go:
CWEBINPUTS = /Users/ryu/local/lib/cweb

上記はmacの例。$HOME/usrと$HOME/localが混ざっているのはご愛嬌。 設定を変えたら

$ make tests

Congratulations --- the tests have all been passed. と印字されたら。コンパイル成功

$ make install

これで、bdd15のコンパイルに必要なライブラリとヘッダーが手に入った。 あとはそれぞれの場所とリンクすべきライブラリを指定してコンパイルするだけ。

gcc -o -I/Users/ryu/local/sgb/include -L/Users/ryu/local/lib -lgb bdd15.c

できあがり。

ubuntu Linuxの場合

$ sudo aptitude install cwebx
$ sudo aptitude install sgb #Stanford GraphBase
$ ctablex +c bdd15.w
$ gcc -o bdd15 -l/usr/include -L/usr/lib -lga bdd15.c 

パッケージがあれば簡単。cwebxはcwebの互換プログラム+cオプションでオリジナル互換モード。


Front page   New List of pages Search Recent changes   Help   RSS of recent changes