PRESSMAN*Tech

HTML5, CSS3からWordPress, AWS, Elasticsearchまで。プレスマンのスタッフが綴る技術ブログ。

mod_auth_formがmakeできない

Apache

Apache2.3というか2.4に実装予定のmod_auth_formじゃありません。
こちらのほうです。
まあ、上記ページにApache2.4のほうを使ってねみたいなことが書いてありますが、2.4がなかなかでませんです。
さて、これを何に使うのか、何ができるのかと言うのは問題ではなく、そもそもmakeができません。
環境はCentOS5.4のApache 2.2.3,apr 1.2.7、mod_auth_form 2.05です。


ちなみに、Apache.2.0系だと問題なくmakeできます。まず./configureはこんな感じです。

./configure \
APACHE2_INCLUDE=/usr/include/httpd/ \
APR1_INCLUDE=/usr/include/apr-1/ \
APXS=/usr/sbin/apxs

これでmakeをすると、

/usr/include/apr-1/apr-i386.h:270: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'apr_off_t'
・・・・・・・・・・・・・
mod_auth_form.c:1105: error: 'request_rec' has no member named 'parsed_uri'
make[1]: *** [mod_auth_form.lo] エラー 1
make[1]: ディレクトリ `/root/mod_auth_form-2.05/src' から出ます
make: *** [all-recursive] エラー 1

みたいな感じでエラーが出ます。まあ、エラーの場所がかいてあるのでとりあえずそのファイルを見ます。
/usr/include/apr-1/apr-i386.h:270

typedef  off64_t           apr_off_t;

となってます。off64_tがtypedefされてないっぽいのでググって見るとどうやら、sys/types.hで

#if defined __USE_LARGEFILE64 && !defined __off64_t_defined
typedef __off64_t off64_t;

となっているらしい。というかなってた。
つまり、__USE_LARGEFILE64 が定義されていないのでoff64_tが__off64_t になってない。つまり、
apr-i386.hを

typedef  __off64_t           apr_off_t;

と書き直してmakeすれば、はい終了。

というわけで、めでたくmakeが通ったわけですが、ヘッダファイルをいじるのはなんか微妙なので元に戻してmod_auth_formのMakefileをいじることにします。
mod_auth_formを./configureした後にsrc/Makefileを開くと”DEFS = “で始まる行があります。そこの最後に

-D__USE_LARGEFILE64=1

と足してmakeしてみるとダメでした。そこでググるとどうやらfeature.h内で

#ifdef _LARGEFILE64_SOURCE
# define __USE_LARGEFILE64 1
#endif

となっているらしい。というかなってた。
そんなわけで、先ほどの”DEFS = “の行の最後に

-D_LARGEFILE64_SOURCE=1

を付け足すとめでたく通りました。

投稿者:taichi

taichi の紹介

何でもやりますが、一応プログラマです。
このエントリーをはてなブックマークに追加

私たちと一緒に働きませんか?

株式会社プレスマンでは、プログラミングが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。まずは募集職種をご覧の上、お気軽にお問い合わせください。あなたとお会いできるのを楽しみにしています。

プレスマンの採用情報を見る →

コメントは受け付けていません。

▲ 先頭へ戻る