スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Solaris9でApache+mod_ssl

先日やったSolaris9でApache-1.3.33とOpenSSL-0.9.8とmod_ssl-2.8.23-1.3.33のApacheコンパイルのメモ。

いつもの手順でconfigure、makeしたら

flex -Pssl_expr_yy -s -B ssl_expr_scan.l
make[4]: flex: Command not found

みたいなエラー。。

そうか、そうか、flexがないのか。ということで、flex-2.5.31のパッケージをhttp://www.sunfreeware.com/からダウンロードしてインストール。

すかさずmake

/usr/local/bin/flex -Pssl_expr_yy -s -B ssl_expr_scan.l
m4: bad option: -P
make[2]: *** [ssl_expr_scan.c] Broken Pipe
make[1]: *** [all] Error 1
make: *** [subdirs] Error 1

…また失敗。。

flexがいけないのか?じゃあflexのバージョンを2.5.4にしようかと思ってソースからコンパイルしようとしたらbisonコマンドのところでエラー。

じゃあbisonのバージョンを新しいのにしようと思ったらm4のバージョンを1.4にあげよと。

m4?(゚Д゚)?あっ、さっきのはflexのエラーじゃなくてm4のエラーじゃないですか。

おし!とにかくflex、bison、m4全部新しくしてLet's make!

lex.ssl_expr_yy.c:1900: error: parse error before numeric constant
lex.ssl_expr_yy.c: In function `ssl_expr_yy_scan_string':
lex.ssl_expr_yy.c:1901: error: number of arguments doesn't match prototype
lex.ssl_expr_yy.c:293: error: prototype declaration
lex.ssl_expr_yy.c:1903: warning: passing arg 1 of `strlen' makes pointer from integer without a cast
lex.ssl_expr_yy.c:1903: warning: passing arg 1 of `ssl_expr_yy_scan_bytes' makes pointer from integer without a cast
make[4]: *** [ssl_expr_scan.o] Error 1
make[3]: *** [all] Error 1
make[2]: *** [subdirs] Error 1
make[2]: Leaving directory `/home/sugi/src/apache_1.3.33/src'
make[1]: *** [build-std] Error 2
make[1]: Leaving directory `/home/sugi/src/apache_1.3.33'
make: *** [build] Error 2

まじっすか。。まだダメですか。。

色々調べた結果、configure後Apacheのソースディレクトリで

# touch src/modules/ssl/ssl_expr_scan.c

すれば良いいことが分かった。

OK!今度こそ(゚Д゚)!make!

#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x35): In function `dlfcn_load':
: undefined reference to `dlopen'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x95): In function `dlfcn_load':
: undefined reference to `dlclose'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0xbc): In function `dlfcn_load':
: undefined reference to `dlerror'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x147): In function
`dlfcn_bind_var':
: undefined reference to `dlsym'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x172): In function
`dlfcn_bind_var':
: undefined reference to `dlerror'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x237): In function
`dlfcn_bind_func':
: undefined reference to `dlsym'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x262): In function
`dlfcn_bind_func':
: undefined reference to `dlerror'
#/openssl-0.9.8/libcrypto.a(dso_dlfcn.o)(.text+0x50b): In function
`dlfcn_unload':
: undefined reference to `dlclose'
collect2: ld returned 1 exit status
make[2]: *** [target_static] Error 1
make[2]: Leaving directory `#/apache_1.3.33/src'
make[1]: *** [build-std] Error 2
make[1]: Leaving directory `#/apache_1.3.33'
make: *** [build] Error 2
#apache_1.3.33

……。( ̄Д ̄;;もう何なのかと。。。

dso_xxxxx.oとか出てるからDSO有効にすればいいかなとか思ってconfigureに

--enabel-module=so

を足したら…

コンパイル通った∩(´∀`)∩♪

で、のちにconfigure前に環境変数LDFLAGSに-ldlをセットすればDSO有効じゃなくてもコンパイル通ることが判明。

Bシェル系 LDFLAGS=-ldl; export LDFLAGS
Cシェル系 setenv LDFLAGS -ldl

はぁ~。疲れました。
スポンサーサイト

Template Designed by DW99

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。