Home > Archives > 2006年03月16日

2006年03月16日

とりあえず autoreconf -vfi で

結論として何も考えずに autoreconf -vfi しておけばよいと.新しいファイルに置き換えられてありがたい.あとは改行コードの一括変換とか無いかなぁと,--foreign をオプションに渡すにはどうしたらよいのだろうかと.ま,ここら辺は気が向いたらまた考えるとしよう.

まぬある: Automake Autoconf

OpenC++ のコンパイル

OpenC++Core だと Metaclass のロード部分が省略されてしまっているのでバッククォートを使った PTree の簡単な生成が出来ない.Metaclassをスタティックにリンクしてロード部分を自前で書いたうえで ClassWalker を変更すればどうにかできそうだがそれも面倒なので OpenC++ のコンパイルに再びチャレンジ.とりあえず CVS からとってこれなかったので snapshot で我慢するとして,試行錯誤の末にようやくコンパイルできた.

opencxx-20050912.tar.gz を展開後,configure スクリプトを作ってコンパイルするまでの流れ:改行コードを直して, AM_INIT_AUTOMAKE の引数を直してNEWS ファイルを作って(automake と libtools の古いファイルを消して(-f つけて上書きのほうがよいか)),libtools のファイルを生成して,スクリプト生成(aclocal; autoheader; automake -a; autoconf),コンパイル (./configure; make).

まあ,automake に --foreign つけたら NEWS がいらなかったり,そもそも bootstrap スクリプトを動かせ libtoolize 以下は自動でやってくれるのだが… というか,改行コードの修正後に bootstrap で呼び出す automake と libtoolize に -f つけるだけってのが一番楽か.最終的に,autoreconf -vif と実行するのが一番スマートだということに気づいた

とりあえず以下の環境で確認:(GNU automake) 1.9.6,(GNU Autoconf) 2.59,(GNU libtool) 1.5.22,gcc 3.3.5

自前でやるときのマンドは以下のとおり.

tar xfvz opencxx-20050912.tar.gz
cd opencxx
for fname in `find . -regex '.*\.\(am\|in\|m4\|sh\)'` bootstrap; do mv $fname $fname.old && (nkf --unix $fname.old > $fname); done
mv configure.in configure.in.old && (sed -e 's/AM_INIT_AUTOMAKE($PACKAGE, $VERSION)/AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)/' configure.in.old > configure.in)
mv opencxx/main-con.cc opencxx/main-con.cc.old && (sed -e 's/static char thisVersion\[\] = VERSION;/static char thisVersion\[\] = PACKAGE_VERSION;/' opencxx/main-con.cc.old > opencxx/main-con.cc)
mv occ2.in occ2.in.old && (sed -e 's/\*\.cc|\*\.mc)/\*\.cc|\*\.mc|\*\.cpp)/' occ2.in.old > occ2.in)
touch NEWS
autoreconf -vif 
./configure
make

autoreconf を使わなくても以下のコマンドで代用できると.

#rm -Rf missing install-sh mkinstalldirs libltdl depcomp
libtoolize --ltdl --copy -f
aclocal
autoheader
automake -a --include-deps --copy -f
autoconf

とりあえず,examples が動くかどうかを確認してうまくいけば次の仕事に移れるかも…

Libtool

適当に Web を眺めつつ libtool の使い方をとりあえず覚える.とにかく libtoolize で必要なファイルを生成しておいて AC_PROG_LIBTOOL を configure.in に書けばいいと.古いファイルの上書きに --force をつけて,サブディレクトリに libltdl を持ってくるために --ltdl をつけて,必要なファイルをリンクでなくコピーで持ってくるために --copy をつけときゃいいと.

ということで結局 libtoolize --ltdl --copy --force をして,このあとに aclocal; autoheader; automake -a; autoconf でいけばOKらしい.

参考: http://www.geocities.jp/fut_nis/html/libtool-ja/

Autotool

とりあえず,configure.in と Makefile.am を用意して aclocal; autoheader; automake -a; autoconf という流れでやればいいことは理解した.memo

configure.in とかの改行コードが CR+LF で引っかかったり AM_INIT_AUTOMAKE の書き方が古くて(?)怒られたりしたがどうにか configure の生成が出来た….次は Libtool だ,先は長い.

以下参考にしたところ.

http://www.h7.dion.ne.jp/~matsu/feature/automake/index.html

http://larse-gtk.hp.infoseek.co.jp/automake.html

http://home.catv.ne.jp/pp/ginoue/gnu/autoconf.html

http://www.ncfreak.com/research/magazine/No.004/autoconf.html

bash の履歴

忘れるので書いておく.基本的に Emacs のバインド.

バインド切り替えは set -o emacs とか set -o vi とか.

Ctrl-r でコマンド履歴から後ろ向きにインクリメンタルサーチ

Ctrl-s でコマンド履歴から後ろ向きにインクリメンタルサーチ

Meta-. で履歴の直前のコマンドの最後の引数を入力

Meta-Ctrl-y で直前のコマンドの先頭の引数を入力

Meta-Ctrl-e で変数とかの展開

他にもキーボードマクロが定義できたりするらしいが覚えられん.

微妙な本

autoconf の本を探しに生協の書籍部にいったらハッカーになるための必読書103選とかいう本があったので覗いてみたが… 複数の人間が同じ本を推薦してるのがあってそれをダブルカウントしてるし.ハッカーの定義がよくわからんし挙げられている本もよくわからんのがあるし.何のための本なのだろう?

Home > Archives > 2006年03月16日

Search
Feeds

Page Top