2003/Apr./24


Prev

Next

●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がオカシいわけやな。

今日はスッキリ晴れやかに眠れそうや。

Prev

Next


Go Home GoBack

Copyright 2003 All Rights Reserved by Kazutaka 'Zak' Sawa .