2003/Apr./24
●2003年4月24日 thttpdのつづき今日はthttpdの作業の続き。 いい加減ブチ切れてきたので、最新版をコンパイルすることにする。Linuxマシンを産まれて初めて使って6日目にセルフコンパイルってのも因果なモンやなぁ。 早速ココから最新のソースをダウンロードし、OBSの自分のディレクトリへNetFinderでコピー後、telnetから以下のコマンドで解凍。 tar xzpf thttpd-2.20c.tar.gz おおお、結構ぎょーさんファイルがあるのぉ。READMEファイルを開いて指示通りに以下の処理を行う。 ./configure make しかし、残念ながらコンパイルに失敗する。 timers.h:35:8: warning: extra tokens at end of #endif directive libhttpd.c: In function `ls': libhttpd.c:2522: warning: assignment makes pointer from integer without a cast libhttpd.c: In function `httpd_start_request': libhttpd.c:3464: warning: assignment makes pointer from integer without a cast libhttpd.c:3467: dereferencing pointer to incomplete type 最後の一つがエラーである。実際にコードを見ると、定義されていないメンバー変数を参照している。これに関してgoogleしてみると、どうもこれはいわゆる時差の定義で、他のトコでも未定義ってコトになってるケースが多いらしい。中身は日本なら3600 * 9(GMTとの時差の秒値)の値が入っているそうなので、サクっとコメントアウトして直接数値を入れてしまう。どうせ自分のトコで起動するソフトだし。 改めてmakeしてみる。以下のようなワーニングは出るものの、コンパイルは通った。 In file included from libhttpd.c:74: timers.h:35:8: warning: extra tokens at end of #endif directive libhttpd.c: In function `ls': libhttpd.c:2522: warning: assignment makes pointer from integer without a cast libhttpd.c: In function `httpd_start_request': libhttpd.c:3464: warning: assignment makes pointer from integer without a cast In file included from timers.c:33: timers.h:35:8: warning: extra tokens at end of #endif directive htpasswd.o(.text+0x478): In function `main': : the use of `tmpnam' is dangerous, better use `mkstemp' timers.hのワーニングはまぁ無視しててイイと思うけど、他のはホントはよくないやね。Cの書き方としてよろしくないっつーか。 ま、人様のコードを拝借しているのでそれ以上は言わないで、早速できたバイナリを所定の位置へ移動する。おっと、その前に今起動してるthttpdをkillしてっと。ん?元からあったバイナリは75Kほどなのに、完成したバイナリは144Kもある。これってつまり、添付されてたthttpdが恐ろしく削り込まれたモノだったってコトかしらん。たったの0.1ほどバージョンがアップするだけで容量が倍ってのも考えにくいしねぇ。 んで、念のためにリブートしてthttpdの起動を行う。これまでの設定がちゃんと動いていれば、ps auxで二つのthttpdが見えるはず....見えた(^_^)。 早速Webブラウザで読みに行ってみると...おおお、ちゃんとレンダリングして表示してるぞぃ\(^_^)/。つまり、元から入ってるthttpdがオカシいわけやな。 今日はスッキリ晴れやかに眠れそうや。
Copyright 2003 All Rights Reserved by Kazutaka 'Zak' Sawa . |